2011-10-16 28 views
2

以下两种继承Javascript对象的方法有什么区别吗?用Javascript继承对象的两种不同(?)方法

function Person(name) { 
    this.name = name; 
} 
function Student(name, id) { 
    Person.call(this, name); 
    this.id = id; 
} 

方法1:

Student.prototype.__proto__ = Person.prototype; 

方法2:

Student.prototype = new Person; 
Student.prototype.constructor = Student; 
+1

我不认为设置'constructor'属性是有用的。 – user123444555621

回答

1

除了创建由指定的模式的对象,一个构造函数并另一个有用的事情,它会自动设置新创建对象的原型对象。该原型对象存储在ConstructorFunction.prototype属性中。

您可以通过将相当多的“内部”,.__proto__属性设置为特定的对象来明确地做到这一点。无论如何,这在所有JavaScript实现中都是不可能的。但基本上,它几乎是一样的。 如果未针对对象设置原型,则会采用默认对象(Object.prototype)。