Here's an ordinary object, defined with an object literal, and unaware of the fact that it is soon going to fall victim to parasitism:
var twoD = {
name: '2D shape',
dimensions: 2
};
A function that creates triangle objects could:
1.Clone the twoD object into an object called that. This can be done in 2.any way you saw above, for example using the object() function or copying all the properties.
3.Augment that with more properties.
Return that.
function triangle(s, h) {
var that = object(twoD);
that.name ='Triangle';
that.getArea = function(){return this.side * this.height / 2;};
that.side = s;
that.height = h;
return that;
}
Because triangle() is a normal function, not a constructor, it doesn't require the new operator. But because it returns an object, calling it with new by mistake will work in exactly the same way.
>>> var t = triangle(5, 10);
>>> t.dimensions
2
>>> var t2 = new triangle(5,5);
>>> t2.getArea();
12.5
Note that that is just a name; it doesn't have a special meaning, the way this does.
分享到:
相关推荐
5. **寄生组合继承**(Parasitic Combination Inheritance) 这是JavaScript中最优化的继承模式,结合了寄生继承和组合继承的优点。子类通过寄生方式复制父类实例,然后再通过原型链继承父类的方法。这样既解决了...
7. 寄生组合继承(Parasitic Composite Inheritance) 结合寄生继承和组合继承的优点,子类先通过寄生方式创建一个没有父类引用的新对象,然后将子类的属性添加到这个新对象,最后将新对象设置为子类的原型。这是...
此外,还有原型式继承(Prototypal Inheritance),寄生式继承(Parasitic Inheritance),寄生组合式继承(Parasitic Combination Inheritance)等。在实际开发中,开发者可以选择适合需求的继承方式。 从原型对象...
6. 寄生组合式继承(Parasitic Combination Inheritance):这是最理想的继承方式,通过借用构造函数来继承属性,通过原型链的混成方式来继承方法。这种方式结合了寄生继承和组合继承的优点,是实现继承的最高效方式...
7. **寄生组合式继承(Parasitic Combination Inheritance)**: 被认为是JavaScript中最有效的继承模式。结合了原型继承和构造函数继承的优点,避免了因多次调用父类构造函数而带来的性能问题。具体做法是,首先...
8. **继承的方式**:JavaScript的继承主要通过原型链(Prototype Chaining)、构造函数继承(Constructor Inheritance)、组合继承(...based Inheritance)和寄生式继承(Parasitic Inheritance)等实现...
3. 寄生组合继承(Parasitic Combination Inheritance) 寄生组合继承是JavaScript中最常用的继承模式,它结合了构造函数和原型链继承的优点,避免了父类引用属性的复制。它通过调用父类构造函数来复制属性,然后...
3. 寄生组合式继承(Parasitic Combination Inheritance) 为了解决构造函数继承的问题,寄生组合式继承结合了原型链和构造函数继承的优点,避免了父类方法的多次复制。 ```javascript function Parent(name) { ...
在不使用原型链的继承中,一种常见的方法是使用“寄生组合式继承”(Parasitic Composition)。这种模式结合了借用构造函数(Constructor Borrowing)和组合继承(Composition),避免了原型链中的引用类型问题。它...
寄生组合式继承(Parasitic Combination Inheritance) 通过寄生构造函数避免了组合继承中的问题,是最优的继承模式,减少了属性的复制。 ### 12. ES6 的类(Class) ES6引入了类语法,虽然看起来像传统的面向类的...
5. **寄生组合式继承**(Parasitic Composition): - 通过复制父类的原型到一个新对象,再将这个新对象赋值给子类的原型,以避免共享父类的实例,减少性能损失。 6. **ES6的类继承**(Class Inheritance): - ...
三、实例继承法/寄生构造函数模式(Instance Inheritance / Parasitic Constructor) 实例继承法通过构造函数创建实例,并在构造函数中添加新属性和方法来实现继承。这种方法能对原生核心对象或者DOM对象进行继承,...
寄生组合继承(Parasitic Combination Inheritance)是对组合继承的进一步优化。它通过`Object.create(Parent.prototype, {...})`创建一个继承自父类原型的新对象来替代`new Parent()`,然后将这个对象赋给子类的...
然而,JavaScript 为了弥补这一不足,引入了其他的方式来实现继承,比如使用原型链(Prototype Chain)、寄生构造函数(Parasitic Constructor Pattern)、组合继承(Composition Inheritance)、原型式继承...
此外,一些库实现了`寄生组合式继承`(parasitic composition),这是一种利用原型链和借用构造函数的技术,可以有效避免上述问题。 寄生组合式继承通过以下步骤实现: 1. 创建一个空的构造函数,作为父类的副本。 ...
3. **原型链(Prototype Inheritance)** JavaScript中的对象继承基于原型链。通过`__proto__`或`Object.create()`,可以创建一个新对象并将其原型指向另一个对象。 ```javascript var baseObj = { method: ...