2012-03-05 153 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'); 
    } 
}