2012-03-05 2 views
1

У меня уже есть это:Расширение объекта яваскрипта

var myVar = { appName: 'Test' }; 

Я хочу добавить следующее:

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

И есть это:

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

На самом деле, я хочу, чтобы иметь возможность доступ myVar.appName и myVar.exec();

Таким образом, я могу:

myVar.exec = function(){}; 

Но если у меня есть гораздо больше функций и переменных.

Должен ли я продолжать это делать:

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

Есть ли лучший способ?

+2

Вы понимаете, что объекты javascript - это, по сути, только карты, в которые вы можете добавить любую пару ключей/значений, которые хотите? – Dunes

ответ

0

Вы ищет Object.assign()!

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

Вы можете получить доступ к myVar.appName, myVar.exec и myVar.exec2.

+0

Да! Замечательно! Спасибо! – morishi

+0

Я счастлив, что мое решение помогло! Не могли бы вы считать его ответом? –

+0

Я не понял, пока вы не упомянули об этом. Я только что сделал. Спасибо! – morishi

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'); 
    } 
} 
Смежные вопросы