js中的get和set方法(demo说明)
2017-09-06 23:20
411 查看
访问描述符
概念
当你给一个属性定义setter或者getter,或者两者都有时,这个属性会被定义为“访问描述符”。对于访问描述符来说,Javascript会忽略他们的value和writable特性。取而代之的是set和get函数。
get: 在读取属性时,调用的函数。在读取属性时调用的函数。只指定get则表示属性为只读属性。默认值为undefined。
注意,get属性只有在调用它掌控的属性的时候,才会被调用该get方法的。
set: 在写入属性时调用的函数。在写入属性时调用的函数。只指定set则表示属性为只写属性。默认值为undefined。
var obj2 = {}; Object.defineProperties(obj2, {'wife2': {get : function () {return 'lbb';}}, 'wife3':{value:'zdy'} } ); obj2.wife2 = 'zly'; obj2.wife3 = 'zly'; console.log(obj2);//{wife3: "zdy"} console.log(obj2.wife2);//lbb console.log(Object.getOwnPropertyDescriptor(obj2, 'wife2')); //{set: undefined, enumerable: false, configurable: false, get: ƒ} console.log(Object.getOwnPropertyDescriptor(obj2, 'wife3')); //{value: "zdy", writable: false, enumerable: false, configurable: false} //set的理解 var obj2 = {}; Object.defineProperties(obj2, {'wife2': {get : function () {return 'lbb';} ,set : function (data) { //此时传入的实参就是想要改变的obj2.wife2的值obj2.wife2 = 'chenhao'。data就是用来接收它的。 console.log(data);//chenhao } }, 'wife3':{value:'zdy',writable:true} } ); console.log(obj2.wife2);//lbb obj2.wife2 = 'chenhao'; console.log(obj2.wife2);//lbb //set和get理解 var obj2 = {}; Object.defineProperties(obj2, {'wife2': {get : function () { this.value = 80; //return出的值是什么,obj2.wife2的结果就会是什么。 return this.value; } ,set : function (data) { //data用来接收修改的值,obj2.wife2 = 'chenhao'; console.log(data);//chenhao //此时将get中的return出去的值改成data,即chenhao。 //但是注意,因为之前的this.value = 80,这次的赋值覆盖了其它的值,所以输出的依然是80. this.value = data; } },'wife3':{value:'zdy',writable:true} } ); console.log(obj2.wife2);//80 obj2.wife2 = 'chenhao'; console.log(obj2.wife2);//80 //get和set的理解3 var obj2 = {wname:'xiannv1',wname2:'xiannv2'}; Object.defineProperties(obj2, {'wife2': {get : function () { //确定了obj2.wife2输出的值是return后面的内容,即this.wname = 'xiannv1'。 //get是读取对象属性值的方法。obj2对象的wife2通过get得到值。 return this.wname; } ,set : function (data) { //想修改obj2.wife2,通过data接收到修改的属性值。 //set是修改属性值的方法,想要修改obj2.wife2,就是修改get中ruturn的内容,即this.wname。然后将想要修改的属性值data=chenhao,赋值给this.wname。 console.log(data);//chenhao this.wname = data; } }} ); console.log(obj2.wife2);//xiannv1 obj2.wife2 = 'chenhao'; console.log(obj2.wife2);//chenhao
相关文章推荐
- js中的get和set方法(demo说明)
- js中的get和set方法(demo说明)
- js中的get和set方法(demo说明)
- js中的get和set方法(demo说明)
- js中的get和set方法(demo说明)
- js中的get和set方法(demo说明)
- Java中JFrame的getContentPane()和setContentPane()方法使用说明
- JS属性的get和set方法
- node.js中的http.get方法使用说明
- node.js中的http.get方法使用说明
- JavaScript巧用Object的get和set方法实现js变量的动态监听
- 关于js中的get、set方法
- js对象的set/get方法案例
- node.js中的http.response.setHeader方法使用说明
- JS 实现对象属性的get 和set方法
- node.js中的http.response.setHeader方法使用说明
- C#中关于set和get方法的写法
- js用obj.currentStyle和getComputedStyle获取非行间样式的说明
- Flex类似js里面getElementById的方法
- node.js中的url.resolve方法使用说明