2

Javascript中以下两种继承对象的方法有什么区别吗?

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

方法一:

Student.prototype.__proto__ = Person.prototype;

方法二:

Student.prototype = new Person;
Student.prototype.constructor = Student;
4

1 回答 1

1

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

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

于 2011-10-16T02:26:00.320 回答