私は本質的に強化された「クラス」を持っています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
ますか?