Prototypy w JS – część trzecia

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

Scroll to Top