您的位置:首页 > 其它

利用__define_setter__和 __define_getter__ 定义动态的对象属性

2015-12-02 00:00 441 查看
摘要: 在最新的ES5 标准已经有语法可以支持 属性动态取值

ES5 标准 的例子

var obj = {
get foo() {
return Math.random() > 0.5 ? 'foo' : 'bar';
}
};
var sum = '';
for(var i=1; i<10; i++) {
sum += obj.foo + "\n"; //'foo' or 'bar' randomly ?
}
alert(sum);


最终弹出的10行字符串都是随机出现的

foo
foo
foo
bar
bar
bar
foo
foo
foo
2. 你也可以自已写,可以把

function Tester(str) {

var colors = {
red : ['red_', '_r'],
green : ['red_', '_r'],
gray : ['gray_', '_g']
};

var self = this;

for(var i in colors) {
var ars = colors[i];
self.__defineGetter__(i, function() {
var rs = ars[0] + str + ars[1];
return rs;
});
}
}

var t = new Tester("Hello!");
alert(t.red);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  动态属性取值