临时构造函数New F()

时间:2015-11-25 10:31:48

标签: javascript

我是JS的新手,在这个主题上相当困惑。 现在我正在读一本书,它说: -

其中所有原型指向同一个对象并且父母获得子项的属性,就是使用中介来 打破链条。中介采用临时构造函数的形式。

创建一个空函数F()并将其原型设置为原型 父构造函数,允许您调用新的F()并创建没有的对象 他们自己的属性,但继承了父母原型的一切。

这是代码。

  function Shape() {

}
// augment prototype
Shape.prototype.name = 'Shape';
Shape.prototype.toString = function () {
    return this.name;
};




function TwoDShape() {

};
// take care of inheritance
// Creating a Temporary constructor Function
var F = function () {

};


// Then Setting its prototype to Parent's Prototype.
F.prototype = Shape.prototype;


// Allows to call a function
TwoDShape.prototype = new F();

//Settubg cobstryctir
TwoDShape.prototype.constructor = TwoDShape;


// augment prototype
TwoDShape.prototype.name = '2D shape';




function Triangle(side, height) {
    this.side = side;
    this.height = height;
}




var F = function() {

};
F.prototype = TwoDShape.prototype;
Triangle.prototype = new F();
Triangle.prototype.constructor = Triangle;
// augment prototype
Triangle.prototype.name = 'Triangle';
Triangle.prototype.getArea = function () {
    return this.side * this.height / 2;
};


var my = new Triangle(5, 10);
console.log(my.getArea());

现在我很困惑那条线

允许您调用新的F()并创建没有的对象 他们自己的属性,但继承了父母原型的一切。

Triangle.prototype = new F();

意味着当我们创建一个三角形obj时,它的原型指向新的对象吗? 然后

F.prototype = Shape.prototype;

这意味着f原型指向Shape原型..所以三角形的新对象间接使用形状原型。 但有什么用? 为什么这样做? 因为我是学习者,请耐心等待。感谢。

0 个答案:

没有答案