0
我試着深入理解javascript,我已經實現了我想要做的事情,但我確信有更好的方法。Javascript默認功能
我有這樣的代碼:
var props = {
val: 'foo',
test: function() {
console.log(this.val);
}
}
function testFactory() {
var myFunc = function() {
myFunc.test();
};
myFunc.__proto__ = props;
return myFunc;
}
這讓我有特性的功能:
var test = testFactory();
test(); // "foo"
test.val = 'bar';
test(); // "bar";
的問題是,新的「myFunc
」被重建,每次我跑「testFactory()
」 。 我很確定我能以更好的方式做到這一點?!
Thak你提前。
編輯
你的答案和意見後:
function testFactory() {
var myFunc = function() {
myFunc.test();
};
Object.assign(myFunc, props);
return myFunc;
}
什麼是你的定義「更好的方法」? – Jamiec
您確定要覆蓋函數的原型嗎?另外,工廠還在做什麼比創建新實例? –
不,每次都無法創建新的'myFunc'。因爲顯然這就是'testFactory'要做的事情,所以創建一個新的對象是一個函數。 – Bergi