js对象,set和get方法 的三种实现形式

 1   var obj1 = {
 2         name: 'shaanxi',
 3         get nameGet() {
 4             return this.name + 'a';
 5         },
 6         set nameSet(name) {
 7             this.name = name;
 8         }
 9     };
10 
11     console.info(obj1.nameGet);  //shaanxia
12     obj1.nameSet = 'set by set keywords';  
13     console.info(obj1.nameGet);  //set by set keywordsa

第一种方式,直接在对象内设置。如代码所示。

 1   var obj2 = {
 2         name: 'shaanxi'
 3     };
 4 
 5     obj2.__defineGetter__('nameGet', function() {
 6         return this.name;
 7     });
 8     obj2.__defineSetter__('nameSet', function(
 9         name) {
10         this.name = name;
11     });
12     var ref1 = obj2.__lookupGetter__('nameGet');
13     var ref2 = obj2.__lookupSetter__('nameSet');
14     console.info(obj2.nameGet);  //shaanxi
15     obj2.nameSet = 'set by __defineSetter__';
16     console.info(obj2.nameGet);  //set by __defineSetter__

第二种方式:使用原型方法进行设置

 1  var obj3 = {
 2         name: "shaanxi"
 3     };
 4  Object.defineProperties(obj3, {
 5         nameGet: {
 6             value: function() {
 7                 return this.name;
 8             }
 9         },
10         nameSet: {
11             value: function(name) {
12                 this.name = name;
13             }
14         }
15     });
16 
17     console.info(obj3.nameGet());  //shaanxi
18     obj3.nameSet('set by Object.defineProperty');
19     console.info(obj3.nameGet());  //set by Object.defineProperty

第三种方式:使用Object.defineProperty()和Object.defineProperties()进行设置

转载于:https://www.cnblogs.com/wangEddy/p/7827277.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值