呼叫之間的差異
重要性: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