2015-01-16 15 views
0

У меня есть код, как показано ниже, Есть ли более простой способ для записи Object.defineProperty в JavaScript?Есть ли простой способ писать для Object.defineProperty в JavaScript

Object.defineProperty(window, "world", 
{ 
    set: function(w) 
    { 
    return w(); 
    } 
}); 

Спасибо!

+2

Если вы делаете это много, вы можете написать функцию, которая возвращает эту функцию. –

+2

Что именно не так просто? – Pointy

ответ

3

Попробуйте это:

Object.defineProperties(window, { 
    propertyOne: { 
     get: function(){ }, 
     set: function(i){ ... } 
    }, 

    propertyTwo: { 
     get: function(){ }, 
     set: function(i){ ... } 
    }, 

    propertyThree: { 
     get: function(){ }, 
     set: function(i){ ... } 
    } 
}); 

Эквивалент:

Object.defineProperty(window, "propertyOne", { 
    get: function(){ }, 
    set: function(i){ ... } 
}); 
Object.defineProperty(window, "propertyTwo", { 
    get: function(){ }, 
    set: function(i){ ... } 
}); 
Object.defineProperty(window, "propertyThree", { 
    get: function(){ }, 
    set: function(i){ ... } 
}); 

Также можно использовать получить/установить ключевые слова при назначении функции литерала объекта (например, при настройке прототипа функцию, в JavaScript) :

var Example = function(element){ 
    this.element = element; 
}; 

Example.prototype = { 
    get colour(){ return this.element.style.backgroundColor; }, 
    set colour(i){ this.element.style.backgroundColor = i; } 
} 
+0

Большое спасибо! Возможно, вы знаете причину того, что у меня есть проблемы? http://stackoverflow.com/questions/27986750/object-defineproperties-to-module-exports-in-nodejs –

Смежные вопросы