Listowanie właściwości obiektu z prototype:
function Car(name) {
this.name = name;
}
Car.prototype.brand = "ford";
Car.prototype.showInfo = function() {
console.log(this.brand, this.name);
}
let mustang = new Car("mustang");
let f150 = new Car("f150");
Listowanie właściwości obiektu:
// listowanie właściwości obiektu,
// włączając z prototypu
for (prop in mustang) {
console.log(prop);
}
// name
// brand
// showInfo
// listowanie właściwości tylko obiektu
for (prop in mustang) {
if (mustang.hasOwnProperty(prop))
console.log(prop);
}
// name
Zmieniony prototyp jest aktualizowany dla wszystkich instancji:
function Car(name) {
this.name = name;
}
Car.prototype.brand = "ford";
let mustang = new Car("mustang");
let f150 = new Car("f150");
// dodanie do prototypu price
// udostępni go wszystkim instancjom
Car.prototype.price = 120500;
console.log(mustang.price); // 120500
console.log(f150.price); // 120500
Zmieniony prototyp jest aktualizowany dla wszystkich instancji, ale nie gdy przypisany jest obiekt:
function Car(name) {
this.name = name;
}
Car.prototype.brand = "ford";
let mustang = new Car("mustang");
let f150 = new Car("f150");
Car.prototype.price = 120500;
console.log(mustang.price); // 120500
console.log(f150.price); // 120500
Car.prototype = { weight: 2000 };
let dodge = new Car("viper");
console.log(dodge.brand); // undefined, nie ma
console.log(dodge.weight); // 2000
console.log(f150.price); // 120500
Jak widać w dodge.brand mamy undefined, nie ma informacji.
KW