基本上,我有一個構造函數是這樣的:將所有參數傳遞給構造
function A() {
this.content = toArray(arguments); // toArray converts it to an array
}
我想從另一個函數調用它:
function B() {
return new A();
}
的問題是,我想喜歡將所有傳遞給B
的參數傳遞給A
。
我不能使用apply
(以常規方式):
- 這不會是一個構造函數,如果我
- 我只能
apply
它任何舊的對象不是apply
到prototype
,除非有一個簡單的方法克隆它,我不知道 - 我不能只是創建一個
new A
再次傳遞給它;在現實中,A()
會拋出,如果它沒有通過任何參數,並且我想保留這個功能。
我拿出幾個解決方案:
另一個構造函數!
function C() {} C.prototype = A.prototype; function B() { var obj = new C(); A.apply(obj, arguments); return obj; }
另一個功能!
function _A(_arguments) { if(_arguments.length === 0) { return this; } // Do initialization here! } _A.prototype.constructor = A; function A() { if(arguments.length === 0) { throw new Error("That's not good."); } return new _A(toArray(arguments)); } function B() { return new _A(toArray(arguments)); }
他們的其餘部分是幾乎同樣的事情在不同的格式
但有一個非常簡單而明顯的方式做到這一點?
'Object.create'是完美的。謝謝! – Ryan
@minitech:不客氣。 –