这段代码来自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
有没有办法可以打破getter和setter,以便在o = {}
内不是一个长定义?
答案 0 :(得分:3)
Object.defineProperty是您正在寻找的:
var o = {};
o.a = 1;
Object.defineProperty(o, "b", {
get: function() {
return this.a + 1;
}
});
console.log(o.b)
答案 1 :(得分:1)
您可以使用Object.defineProperty()
:
def sumtree(L):
tot = 0
for x in L: # For each item at this level
if not isinstance(x,list):
tot += x # Add numbers directly
else:
tot += sumtree(x) # Recur for sublists
return tot
见下面的演示:
Object.defineProperty(o, "b", {
get: function() {
// return something
}
})
&#13;