Javascript对象原型和Object.create方法

时间:2015-07-19 15:17:35

标签: javascript oop prototype

Person.prototypeObject.create(Person.prototype)之间有什么区别?我可以使用它们吗?

function Person(name) {
    this.name = name;
}  

Person.prototype.copy = function() {  
    return new this.constructor(this.name);
};  

// define the Student class  
function Student(name) {  
    Person.call(this, name);
}  

// inherit Person  
Student.prototype = Person.prototype;
//Student.prototype = Object.create(Person.prototype);

1 个答案:

答案 0 :(得分:7)

最好使用Student.prototype = Object.create(Person.prototype)代替Student.prototype = Person.prototype;

原因是在后一种情况下两个原型共享一个共同的对象。因此,我们在Student原型中添加一个新方法,人物原型也将被访问该属性。例如: -

Student.prototype = Person.prototype
Student.prototype.test = function(){ alert('in student');};
var person = new Person();
person.test();

这将提醒学生<#39;