2012-03-05 154 views
1

我已經有這樣的:擴展JavaScript對象

var myVar = { appName: 'Test' }; 

我想補充一點:

myVar = { 
     exec: function() 
      { 
       console.log('do stuff'); 
      } 
     } 

而且有這樣的:

myVar = { 
       appName: 'Test', 
       exec: function() 
       { 
       console.log('do stuff'); 
       } 
      } 

其實,我希望能夠到訪問myVar.appNamemyVar.exec();

所以,我可以:

myVar.exec = function(){}; 

但是,如果我有更多的功能和變量。

我必須繼續這樣做:

myVar.func1 = function(){ // stuff 1 }; 
myVar.func2 = function(){ // stuff 2 }; 
myVar.func3 = function(){ // stuff 3 }; 

是否有更好的辦法?

+2

你意識到JavaScript對象本質上只是地圖,你可以添加任何你想要的鍵/值對? – Dunes 2012-03-05 18:57:18

回答

0

你尋找Object.assign()

var myVar = { appName: 'Test' }; 
Object.assign(myVar, { 
    exec: function(){ 
     console.log('do stuff'); 
    } 
    exec2: function(){ 
     console.log('do other stuff'); 
    } 
}); 

然後,您可以訪問myVar.appNamemyVar.execmyVar.exec2

+0

是的!那很棒!謝謝! – morishi 2017-02-01 18:14:23

+0

我很高興我的解決方案幫助!你會考慮把它作爲答案嗎? – 2017-02-04 14:16:42

+0

直到你提到它,我才意識到。我已經做了。謝謝! – morishi 2017-02-04 16:02:13

2
myVar.exec = whatever; 

2

試試這個:

myVar.exec = function(){ 
    console.log('do stuff'); 
} 
2
var myVar = { appName: 'Test' }; 
myVar.exec = function() { 
    console.log('do stuff'); 
} 
0

所有你需要做的是設置等於 「無功」 的對象:

var myVar = { 
    appName: 'Test', 
    exec: function() { 
     console.log('do stuff'); 
    } 
}