我有一个基本上是加强版的“课程” Array
:
function NamedArray(name) {
var result = [];
result.name = name;
return result;
};
var cheeses = new NamedArray('Cheeses');
这很好用。为这个“类”添加一个原型是行不通的:
NamedArray.prototype = {
nameInAllCaps: function() {
return this.name.toUpperCase();
}
};
cheeses.nameInAllCaps();
=> TypeError: Object #<Object> has no method 'nameInAllCaps'
我的第一个想法是将“原型”混合到result
Array
:
function NamedArray(name) {
var result = [];
result.name = name;
for (var prop in NamedArray.prototype) {
if (NamedArray.prototype.hasOwnProperty(prop) {
result[prop] = NamedArray.prototype[prop];
}
}
return result;
};
这可行,但它会导致每个实例都有自己的原型属性副本。有没有办法将NamedArray.prototype 插入到原型链中result
Array
?