您的位置:首页 > Web前端 > JavaScript

js属性类型(数据属性和访问器属性)

2017-03-17 16:40 267 查看

写这篇文章的目的是因为本人在学习这块知识的时候发现网上找的资料基本上都是照抄书上的,几乎没有加入自身理解,而书中我虽然觉得讲的很详细,但是也很啰嗦,以至于有时候读不通(我就是读了好几遍加上观察了很多才明白讲了些什么,才把概念之间的东西弄明白)。

js属性类型:数据属性和访问器属性

js属性类型包含两种,1.数据属性。2.访问器属性。我将从两者之间的区别分析尽量讲明白。首先它们两者都含有4个描述其行为的特性。
数据属性:[[Configurable]],[[Enumerable]],[[Writable]],[[Value]];
访问器属性:[[Configurable]],[[Enumerable]],[[Get]],[[Set]]。
下边引用下书中概念:ECMA-262定义这些特性是为了实现JavaScript引擎用的,因此在JavaScript中不能直接访问它们。为了表示特性是内部值,该规范把它们放在了两对方括号中。
属性含义解释:
1.
[[Configurable]]:表示是否能通过delete删除属性从而重新定义属性,能否修改属性的特性,能否把属性修改为访问器属性(如果是访问器属性调用则后边一句应改为“能否把属性修改为数据属性”,所以可以视为根据调用属性不同之间的切换)。

2.
[[Enumerable]]:表示能否用for-in循环返回。
3. [[writable]]:表示能否修改属性的值。
4. [[Value]]:包含这个属性的数据值。读取属性值的时候从这个位置读,写入属性值的时候更新到这个位置,默认值为undefined。

5.
[[Get]]:读取属性时调用的函数,默认undefined。
6. [[Set]]:写入属性时调用的函数,默认undefined。

通过概念很明显可以看出来[[Configurable]],[[Enumerable]]是两个属性都存在的描述行为。所以两者之间的区别可以从其描述属性中加以区别。解释就到这里,建议读者再配合书本概念及代码加以了解(推荐)《JavaScrippt高级程序设计(第三版)第六章》
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: