我的问题是关于创建继承的对象 来自"超类"。
我提出了几种不同的方法:
function PersonClass_1() {
this.age = 0;
this.gender = "female";
}
PersonClass_1.prototype.doAge = function () {
this.age++;
}
// create a new Object that inherits from Person.prototype
var p1 = Object.create(PersonClass_1.prototype);
// Call constructor function, with |this| set to the newly
// created object |p1|.
PersonClass_1.call(p1);
function PersonClass_2() {}
PersonClass_2.prototype.doAge = function () {
this.age++;
}
PersonClass_2.prototype.age = 0;
PersonClass_2.prototype.gender = "female";
// create a new Object that inherits from Person.prototype
var p2= Object.create(PersonClass_2.prototype);
// Call constructor function, with |this| set to the newly
// created object |p2|.
PersonClass_2.call(p2);
function PersonClass_3() {
this.age = 0;
this.gender = "female";
this.doAge = function () {
this.age++;
}
}
// create a new Object that inherits from Person.prototype
var p3 = Object.create(PersonClass_3.prototype);
// Call constructor function, with |this| set to the newly
// created object |p3|.
PersonClass_3.call(p3);
所以我最终得到的是三个物体。 唯一的区别似乎是它们属性的实际位置。
PersonClass_1具有对象本身的年龄和性别,以及其中的doAge 原型。
PersonClass_2在其原型中包含年龄,性别和doAge。
PersonClass_3在对象本身中具有年龄,性别和doAge。
但三人的行为似乎完全一样。或者他们有什么重大区别?