使用继承创建对象

时间:2016-08-22 18:56:21

标签: javascript

我的问题是关于创建继承的对象 来自"超类"。

我提出了几种不同的方法:

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。

但三人的行为似乎完全一样。或者他们有什么重大区别?

0 个答案:

没有答案