利用__define_setter__和 __define_getter__ 定义动态的对象属性
利用__define_setter__和 __define_getter__ 定义动态的对象属性
小骏骏 发表于2年前
利用__define_setter__和 __define_getter__ 定义动态的对象属性
  • 发表于 2年前
  • 阅读 34
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 新注册用户 域名抢购1元起>>>   

摘要: 在最新的ES5 标准已经有语法可以支持 属性动态取值
  1. 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);


标签: 动态属性取值
共有 人打赏支持
粉丝 9
博文 110
码字总数 22428
×
小骏骏
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: