javascript的setter getter方法总结
来源:互联网 发布:战争雷霆画质知乎 编辑:程序博客网 时间:2024/05/16 08:48
javascript的setter getter方法一共有五种实现方式
- 1.通过对象初始化器定义
- 2.使用 Object.create 方法
- 3.使用 Object.defineProperty 方法
- 4.使用 Object.defineProperties 方法
- 5.使用 Object.prototype.defineGetter 以及 Object.prototype.defineSetter 方法
1.通过对象初始化器定义
var o = { a : 8, get b(){return this.a +1;},//通过 get,set的 b,c方法间接性修改 a 属性 set c(x){this.a = x/2}};console.log(o.a);//8console.log(o.b);//9o.c = 50;console.log(o.a);//25
我们试着将get set的方法改写成同名,注意属性a与方法a会混淆,将属性a改为_a,结果如下:
var o = { _a : 8, get a(){return this._a +1;},//死循环 set a(x){this._a = x/2}};console.log(o._a);//8console.log(o.a);//9o.a = 50;console.log(o._a);//25console.log(o.a);//26
es6中的新语法:
var b = "bb";var c = "cc";var o = { _a : 8, get [b](){return this._a +1;}, set [c](x){this._a = x/2},};console.log(o._a);//8console.log(o[b]);//9o["cc"] = 50;//等同于o.c = 50;console.log(o._a);//25
2.使用 Object.create
方法
var o = null;o = Object.create(Object.prototype, { bar:{ get :function(){ return 10; }, set : function (val) { console.log("Setting o.bar",val); } } });console.log(o.bar);//10o.bar = 12;//Setting o.bar 12console.log(o.bar);//10
如果这样写:
var o = { a: 10 };o = Object.create(Object.prototype, { bar: { get: function() { return o.a;//或者this.a结果一样 }, set: function(val) { this.a = val; } }});console.log(o.bar); //undefinedo.bar = 12; console.log(o.bar); //12
3.使用 Object.defineProperty
方法
var o = { a: 10 } //声明一个对象,包含一个 a 属性,值为1Object.defineProperty(o, "b", { get: function() { return this.a; }, set: function(val) { this.a = val; }, configurable: true});console.log(o.b);//10o.b = 2;console.log(o.b);//2
4.使用 Object.defineProperties
方法
var obj = { a: 1, b: "sss" };Object.defineProperties(obj, { "A": { get: function() { return this.a + 1; }, set: function(val) { this.a = val; } }, "B": { get: function() { return this.b + 2; }, set: function(val) { this.b = val } }});console.log(obj.A);//2console.log(obj.B);//sss2obj.A = 3;obj.B = "hello";console.log(obj.A);//4console.log(obj.B);//hello2
5.使用Object.prototype.__defineGetter__
以及 Object.prototype.__defineSetter__
方法
这两种方法是非标准,最好不要在开发中使用
var o = { _a: 1 };o.__defineGetter__("a", function() { return this._a;});o.__defineSetter__("a", function(val) { this._a = val;})console.log(o.a);//1o.a = 2;console.log(o.a);//2
0 0
- javascript的setter getter方法总结
- JavaScript getter setter的使用
- JavaScript对象中属性的getter和setter方法
- JavaScript对象中属性的getter和setter方法
- JavaScript中的setter和getter方法!!
- JavaScript中setter和getter方法介绍
- JavaScript中getter/setter的实现
- JavaScript对象属性的getter和setter
- JavaScript中getter/setter的实现
- javascript 中的getter,setter
- JavaScript setter与getter
- Socket类的getter和setter方法
- Struts2的getter()和setter()方法
- Socket类的getter和setter方法
- 生成getter与setter的方法
- Object_C的setter、getter方法实现
- scala属性的getter和setter方法
- idea添加getter、setter方法的快捷键
- 学习资源:框架
- 树链剖分(转)
- misc还可以这样安装
- HTTP协议实践篇--浏览器缓存总结、利用Fiddler和apache模拟
- HTTP状态码
- javascript的setter getter方法总结
- 虚拟机增加新硬盘和vim显示行号
- 开发总结!
- 编辑器CKEDITOR使用实例
- javascript面向对象和面向委托
- CXF-02:使用CXF开发Web Service客户端
- React Native移植原生Android
- 解析MYSQL显示表信息的方法
- 一个正整数分解质因数。