Javascript对象的数据属性和访问器属性
来源:互联网 发布:acr软件免费下载 编辑:程序博客网 时间:2024/05/17 22:50
之前看了Javascript Dom编程艺术,在第二章对javascript的语法功能介绍较少,于是又开始看了Javascript高级程序设计,感觉这本真是很不错啊,对知识讲解的很详细,对我这个初学者来说,很有收获。
不多说,先来谈谈对js类的体会,之前创建一个新类,赋予属性和方法,比如:
var person=new Object(); person.name="xuzhiwei"; person.showName=function(){ alert(this.name); }; person.showName();
这样浏览器输出xuzhwei,这是以前老的方法,现在流行的创建类的方法是创建字面量方法:
var person={ name:"xuzhiwei", showName: function () { alert(this.name); } }; person.showName();
也能得到相同的结果。
然后是这次的重点,对象有两种属性:数据属性和访问器属性。
数据属性有四个:
Configurable,这个是表示能否用delete删除属性从而重新定义属性,默认值是true。
Enumerable:表示能否通过for-in循环访问属性,默认属性也是true。
Writable:表示对属性能否修改,默认还是true。
Value:表示这个属性的值是多少,因为一开始没有赋值,默认是undefined。
设置数据属性的方法是Object的方法:defineProperty,它接受三个参数:对象名字,要设置的属性名字,还有一个描述对象。
接下来看个小例子:
var person={ name:"xuzhiwei", showName: function () { alert(this.name); } }; Object.defineProperty(person,"name",{ value:"赵超", writable:false }); alert(person.name);最后输出的结果是:赵超,可以发现将原来的值改变了,因为这里writable设置的是false,所以现在值是不可以修改了。
访问器属性:
get:在访问数据的时候(className.propertyName)调用的方法,默认undefined。
set:在给对象赋值的时候调用的方法,默认undefined。
访问器属性也是必须用Object的defineProperty方法调用,看下面的例子:
var person={ _name:"xuzhiwei", editCount:0 }; Object.defineProperty(person,"name",{ //name表示接下来要访问的值,不是_name; get: function () { return this._name; }, set: function (newValue) { this._name = newValue; this.editCount++; } }); alert(person.name); person.name="李奇然"; alert(person.name+" "+person.editCount);
person对象的name由于加了_,不能直接访问,类似java的private属性。最后输出的是:李奇然 1。表示赋值也改变了editCount的值。
当然也可以只指定get,表示这个name只能读不能写,类似之前的writable:false。
当然还有defineProperties()方法,表示一次性定义多个属性,比如:
var person = {}; Object.defineProperties(person, { _name: { writable: true, value: "赵超" }, editCount: { writable: true, value: 0 }, name: { get: function () { return this._name; } , set: function (newValue) { this._name = newValue; this.editCount++; } } }) ; alert(person.name); person.name = "李奇然"; alert(person.name + " " + person.editCount);
在这个例子中,一次性定义了多个属性,运行结果和之前的一样。只不过第一个对话框显示的是赵超。
1 0
- Javascript对象的数据属性和访问器属性
- 访问javascript对象的属性和方法
- JavaScript对象的创建和属性访问
- javascript对象属性的访问
- JavaScript对象属性的访问
- JavaScript笔记--数据属性和访问器属性
- JavaScript笔记--数据属性和访问器属性
- JavaScript学习——数据属性和访问器属性
- javascript 访问对象属性
- Javascript 访问对象属性
- JavaScript中访问id对象.属性的方式访问属性
- JS对象高级属性:数据属性与访问器属性
- ECMAScript数据属性和访问器属性
- 数据属性和访问器属性
- javascript中访问对象的属性
- JavaScript prototype 属性和 对象属性、类属性的区别
- js属性类型(数据属性和访问器属性)
- JavaScript的属性访问
- 局域网内如何让设备远程访问指定设备的数据库MySQL
- P2P
- iOS声明变量在@interface括号中与使用@property的区别
- 简易在线投票系统(php)——前端设计(html部分)
- uva 1587 box
- Javascript对象的数据属性和访问器属性
- hadoop开发—Java零基础,开发选择什么开发工具比较合适
- 逆矩阵的计算
- 普通电视盒子安装绑定迅雷远程下载,实测成功
- JTable中嵌套JButton并加入JButton的事件处理
- 单元测试详解
- HBase 总结之HBase作为输入源
- shader 流光效果
- 织梦教程:手把手教你让dedecms禁止发布重复文章