[英]Using “this” versus “.prototype” inside the constructor function
有人可以使用構造函數來說明下面兩個代碼的區別。 它們都給出相同的結果。 一個人比另一個人有優勢嗎?
function Person(){
Person.prototype.name = "Nicholas";
Person.prototype.age = 29;
}
var person1 = new Person();
var person2 = new Person();
person1.name = "Greg";
alert(person1.name); //"Greg" from instance
alert(person2.name); //"Nicholas" from prototype
與
function Person(){
this.name = "Nicholas";
this.age = 29;
}
var person1 = new Person();
var person2 = new Person();
person1.name = "Greg";
alert(person1.name); // "Greg" from instance
alert(person2.name); // "Nicholas" from Person Object?
他們正在做一些不同的事情。
第一個是在每次構造函數調用時為原型分配相同的詳細信息。 這些細節將由通過此構造函數創建的每個對象共享。 這絕對不是您應該做的。 通常,僅應將方法添加到原型中,並且絕對不要在構造函數的主體內添加方法。 它應該在構造函數之外發生(它只是在不必要地運行無意義的代碼,並且會使其他開發人員感到困惑)。
第二,這些屬性對於返回的構造對象是本地的,在這種情況下就是this
。 這是擁有實例屬性的正確方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.