呼び出し感の差異
重要性: 5
新しい rabbit
オブジェクトを作りましょう:
function Rabbit(name) {
this.name = name;
}
Rabbit.prototype.sayHi = function() {
alert(this.name);
};
let rabbit = new Rabbit("Rabbit");
これらの呼び出しは同じことをしますか?それとも違う?
rabbit.sayHi();
Rabbit.prototype.sayHi();
Object.getPrototypeOf(rabbit).sayHi();
rabbit.__proto__.sayHi();
最初の呼び出しは、this == rabbit
を持っており、他のものは this
は Rabbit.prototype
と等しいものを持っています。なぜなら、それは実際にドットの前のオブジェクトだからです。
従って、最初の呼び出しのみ Rabbit
を表示し、それ以外は undefined
を表示します。:
function Rabbit(name) {
this.name = name;
}
Rabbit.prototype.sayHi = function() {
alert( this.name );
}
let rabbit = new Rabbit("Rabbit");
rabbit.sayHi(); // Rabbit
Rabbit.prototype.sayHi(); // undefined
Object.getPrototypeOf(rabbit).sayHi(); // undefined
rabbit.__proto__.sayHi(); // undefined