关于JavaScript中Get/Set访问器
来源:互联网 发布:剑灵天族捏脸数据分享 编辑:程序博客网 时间:2024/05/17 03:05
有时候大家可能会纳闷,在使用JavaScript的时候,只需要给一个系统变量赋值就可以触发一系列操作去相应。
但是我们在写Js的时候,修改了一个自定义变量,却连个P都没有。是不是很郁闷呢?
其实,我们现在就可以做类似系统变量那样的功能了!
做个假设,我们有一个变量,要求可以输入出生年份并自动计算当前年龄。
如:
// 定义一个年龄变量并赋予初始值var age = 18;// 我们手动输入的出生年份age = 1994;// 此时age=?
大家可能说我最后的这个疑问有毛病,骂我是SB。。。没关系。。。刚才我们提过需求了嘛……
按需求来说,age这个时候应该是等于20。
很明显要做这个操作我们要调用一个函数来进行处理,但是能不能不手动调用函数来完成这个功能呢?
下面我们来介绍一下此章主角 Get/Set访问器!
说明了,就是我们可以限制一个变量是否可以被访问或是否可以被重写。
另外还有一个功能是,我们在访问或重写时可以执行其他语句进行处理。
使用方法一:
var age = 18;var test = { get age (){ return age; }, set age (value){ if(value > 100) age= new Date().getFullYear() - value; else age = value; }};
这个时候我们再写如下代码来进行操作。
test.age = 1994;alert(test.age);
如何?是不是正确的显示了20这个数字?
可是以上方法比较麻烦也不好理解。我们来看看第二种方法是否更有实用性:
function Person() { var age = new Date().getFullYear() - 18; Object.defineProperty(this, "age", { get: function () { alert("内部存储数据为:" + age); return new Date().getFullYear() - age; }, set: function (value) { age = value; } });}
使用以下代码测试:
var p = new Person();p.age = 1994;alert("外部获取到的数据为:" + p.age);
具体使用哪种方法按照需求进行选择。
拓展知识:
问:为什么以前没听过Get/Set访问器?
答:因为这是ECMAScript 5新增特性,比较新,所以以前自然是没有了。
问:我可以在什么样的浏览器中运行?
答:具体的我没测试过,但是就我本机环境来说这些版本的浏览器可以运行(Chrome 32、IE 9、FireFox 28、Opera 19、Safari 5.1.7).
1 0
- 关于JavaScript中Get/Set访问器
- 关于JavaScript中Get/Set访问器
- 关于JavaScript中Get/Set访问器
- JavaScript中Get/Set访问器
- javascript中Get/Set访问器
- JavaScript中Get和Set访问器的实现…
- JavaScript中Get和Set访问器的实现
- C#中get和set访问器
- 网络之美:JavaScript中Get和Set访问器的实现
- 网络之美:JavaScript中Get和Set访问器的实现
- C#中get和set访问器的解释
- C#中get和set访问器的解释
- C#中属性 get和set访问器
- get访问器和set访问器
- JavaScript中set与get方法用法
- 关于C#中get和set(转)
- 关于C#中get和set
- 关于C#中get和set
- Facebook、亚马逊等巨头是如何建造自己的数据库的?| 全球聚焦
- 深度学习清单
- 将eclipse工程移到android studio
- 练习
- 理解 LSTM 网络
- 关于JavaScript中Get/Set访问器
- hdojP2011
- 根据进程id找窗口句柄
- PCA数学原理
- iOS view加虚线边框
- 使用Okhttp上传图片
- 对于大流量的网站,采用什么方法解决访问量问题
- android编译错误recipe commences before first target。 停止
- macOS使用 之 读写NTFS格式磁盘