在Javascript中继承对象的两种不同(?)方法

时间:2011-10-16 02:17:34

标签: javascript inheritance prototypal-inheritance

以下两种在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 个答案:

答案 0 :(得分:1)

除了按指定模式创建对象外,构造函数还有另一个有用的功能,它会自动为新创建的对象设置原型对象。此原型对象存储在ConstructorFunction.prototype属性中。

您可以通过将“几乎”内部“.__proto__属性设置为特定对象来明确地执行此操作。无论如何,这在所有javascript实现中都是不可能的。但基本上,它几乎是一样的。 如果没有专门为对象设置原型,则采用默认对象(Object.prototype)。