以下两种在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;
答案 0 :(得分:1)
除了按指定模式创建对象外,构造函数还有另一个有用的功能,它会自动为新创建的对象设置原型对象。此原型对象存储在ConstructorFunction.prototype
属性中。
您可以通过将“几乎”内部“.__proto__
属性设置为特定对象来明确地执行此操作。无论如何,这在所有javascript实现中都是不可能的。但基本上,它几乎是一样的。
如果没有专门为对象设置原型,则采用默认对象(Object.prototype
)。