JavaScript对象的属性有两类:数据属性和访问器属性

数据属性

数据属性有四个特性,分别为:

  1. [[value]]属性的值
  2. [[writeable]]属性是否可以修改
  3. [[enumerable]]属性是否可枚举
  4. [[configurable]]属性是否可配置,包括是否可删除,是否可修改属性的特性,是否可修改为访问器属性

通过一般方式默认的特性为undefined,true,true,true。通过defineProperty方式默认的特性为undefined,false,false,false。

注:如果通过defineProperty的操作未明确指定configurable为true,则属性的操作将受到限制(包括不能被修改,不能被删除,不能修改特性,不能修改为访问器属性)

访问器属性

访问器属性有四个特性,分别为:

  1. [[get]]属性的值
  2. [[set]]属性是否可以修改
  3. [[enumerable]]属性是否可枚举
  4. [[configurable]]属性是否可配置,包括是否可删除,是否可修改属性的特性,是否可修改为数据属性

通过一般方式默认的特性为undefined,undefined,true,true。通过defineProperty方式默认的特性为undefined,undefined,false,false。

注:如果通过defineProperty的操作未明确指定configurable为true,则属性的操作将受到限制(包括不能被修改,不能被删除,不能修改特性,不能修改为数据属性)

定义属性:

Object.defineProperty(对象,属性名称,属性描述符)
获取属性特性(属性描述符)
Object.getOwnProperyDescriptor(对象,属性名称)

自身属性

通过getOwnPropertyNames可以获取自身属性包括可枚举和不可枚举
for..in或者Object.keys可以获取自身以及原型链上的可枚举属性,然后通过hasOwnProperty可以获取自身的可枚举属性

参考:

  • JavaScript高级程序设计6.1理解对象
  • nodejs包merge-descriptors

个人博客地址 :http://blog.yangqiong.com.cn/dui-xiang-shu-xing/

JavaScript对象属性的更多相关文章

  1. 删除要被替换的元素的所有事件处理 程序和 JavaScript 对象属性

    使用本节介绍的方法替换子节点可能会导致浏览器的内存占用问题,尤其是在 IE 中,问题更加明显.在删除带有事件处理程序或引用了其他 JavaScript 对象子树时,就有可能导致内存占用问题.假设 某个 ...

  2. Javascript对象属性与方法汇总

    Javascript对象属性与方法汇总 发布时间:2015-03-06 编辑:www.jquerycn.cn 详细介绍下,javascript对象属性与对象方法的相关知识,包括javascript字符 ...

  3. JavaScript对象属性的基础教程指南

    JavaScript是使用“对象化编程”的,或者叫“面向对象编程”的.所谓“对象化编程”,意思是把JavaScript能涉及的范围划分成大大小小的对象,对象下面还继续划分对象直至非常详细为止,所有的编 ...

  4. JavaScript对象属性访问的两种方式

    JavaScript对象属性访问的两种方式 object.attribute object["attribute"] 例如: var employees = [ { "f ...

  5. JavaScript 对象属性

    JavaScript 对象属性 属性中的 . 和 [ ](点 和 方括号)的区别 .  :取对象自身的属性值: [ ]:括号内容可以是变量: var obj = {}; obj.name = 'Twx ...

  6. js 技巧 (六)JavaScript[对象.属性]集锦

    JavaScript[对象.属性]集锦 SCRIPT 标记 用于包含javascript代码. 语法 属性 LANGUAGE 定义脚本语言 SRC 定义一个URL用以指定以.JS结尾的文件 windo ...

  7. javascript对象属性和数组的访问

    javascript对象属性的访问 假如有对象test:var test = {  "a":1,  "b":2};直接访问对象test的属性a的值,有两种方法: ...

  8. 了解JavaScript 对象属性的标签

    对象属性的标签 value(属性值), writable(属性可写), enumerable(属性可枚举), configurable(属性可配置), 这些属性标签使对象所持有的属性体现出不同的特性, ...

  9. JavaScript对象属性(一)

    对象object  对象和数组很相似,数组是通过索引来访问和修改数据,对象是通过属性来访问和修改数据的. 这是一个示例对象: var cat = { "name": "W ...

  10. JavaScript对象属性 constructor

     对象属性 constructor 属性返回对创建此对象的数组函数的引用; constructor(构造函数) 在对象创建或实例化时候被调用的方法.通常使用该方法来初始化数据成员和所需资源.构造函数不 ...

随机推荐

  1. codeblocks 汉字乱码

    网上有很多方法,不过目测是不同的机子和环境要用不同的设置来应对这种情况 电脑情况: win8 64-bit 装的是codeblocks v12.11 然后在我电脑上正确的配置是setting-edit ...

  2. 扩展thinkphp5的redis类方法

    笔者在开发时发现,thinkphp5的自带redis类方法,只有简单的读取缓存.写入缓存的基本方法,远不能满足我们业务的需求.redis本身支持五种数据类型,string(字符串).hash(哈希). ...

  3. HDU - 2962 Trucking SPFA+二分

    Trucking A certain local trucking company would like to transport some goods on a cargo truck from o ...

  4. RobotFramework+selenium环境安装

    1.安装python 2.7.12 https://www.python.org/downloads/release/python-2712/ 安装完成之后配置好path,将下面的类似安装路径加入pa ...

  5. 如何让div中的span垂直居中 ----height:100%设置div的高度

    如果div中只有一个span一个元素,可以使用line-height.如果div中还有其他元素,可以设置span的css如下: .span{ position: absolute; top: 50%; ...

  6. zoj2901【DP·二进制优化】

    题意: 要排一个L长度的序列,当 j 放在 i 后面的时候会增加v[ i ][ j ]的值,求构成L长度序列的最大值. 思路: 可以想到预处理任意两点<i,j>的最大值是多少,然后题目还有 ...

  7. python-根据URL地址下载文件

    博主个人网站:https://chenzhen.online 使用Python中提供的urllib.request下载网上的文件 #coding=utf-8 """ 目标 ...

  8. pytest框架(二)

    一.示例代码一 D:YOYO\ __init__.py test_class.py # content of test_class.py class TestClass: def test_one(s ...

  9. dual 视图模拟 Oracle

    CREATE OR REPLACE VIEW dual ASSELECT NULL::"unknown"WHERE 1 = 1;

  10. 基于IDEA实现SSM整合框架的搭建配置流程

    1.创建数据库表,以员工信息表为例子: DROP TABLE IF EXISTS `em_info`; CREATE TABLE `em_info` ( `em_id` INT(50) NOT NUL ...