2016-05-23 3 views
2

Этот бит кода происходит от MDN:Определение добытчиками и сеттеров после экземпляра объекта

var o = { 
 
    a: 7, 
 
    get b() { 
 
    return this.a + 1; 
 
    }, 
 
    set c(x) { 
 
    this.a = x/2 
 
    } 
 
}; 
 
$('body').append(o.a + '<br>') 
 
$('body').append(o.b + '<br>') 
 
o.c = 50; 
 
$('body').append(o.a + '<br>')
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

То, что я хотел бы сделать, это разбить его еще дальше. Я получил, насколько линии 3, как так:

var o = {} 
o.a = 7 
o.get b() { // broken 

Есть ли способ, что я могу сломать методы получения и установки таким образом, чтобы это не один длинное определения внутри o = {}?

ответ

1

Вы можете добиться этого с помощью Object.defineProperty():

Object.defineProperty(o, "b", { 
    get: function() { 
    // return something 
    } 
}) 

Смотреть демо ниже:

var o = {}; 
 
o.a = 1; 
 
Object.defineProperty(o, "b", { 
 
    get: function() { 
 
    return this.a + 1; 
 
    } 
 
}); 
 
console.log(o.b)

3

Object.defineProperty является то, что вы ищете:

var o = {}; 
Object.defineProperty(o, 'a', { 
    get: function() { return 1; }, 
    set: function(val) { console.log(val) } 
}); 
Смежные вопросы