通話の相違
重要度: 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