zoukankan      html  css  js  c++  java
  • ECMAScript5 对象的属性操作

    在 ECMAScript 5 中,与对象的属性有关的方法有这些:Object.prototype.hasOwnProperty,Object.defineProperty,Object.defineProperties,Object.getOwnPropertyNames 和 Object.getOwnPropertyDescriptor。除了第一个在 ECMAScript 3 中就已经出现,其它的都是新增的方法。

    Object.prototype.hasOwnProperty 方法用于检测某个属性是对象自己的,还是从原型中继承来的。例如:

    o = {abc: 123};
    console.log(o.hasOwnProperty('abc'));      // true
    console.log(o.hasOwnProperty('toString')); // false

    Object.defineProperty 用于对增加或者修改某个对象的属性,并且可以设置更多的控制选项。例如:

    o = {};
    Object.defineProperty(o, 'abc', {
      value: 123,
      writable: false,
      enumerable: true,
      configurable: false
    });
    o.abc = 456;
    delete o.abc;
    console.log(o.abc); // 123
    

    其中 value 选项指明该属性 abc 的值,writable 选项指明该属性的值是否可以修改,enumerable 选项设置该属性是否在 for (key in o) {} 循环中列出。而 configurable 选项设置为 false 时该属性不可以删除,而且 enumerable 和 configurable 这两个选项也不可以修改,而 writable 选项只能从 true 改为 false。后面三个选项的默认值都是 false。

    Object.defineProperties 和 Object.defineProperty 类似,只是它可以同时定义或修改多个属性。例如:

    var o = {};
    Object.defineProperties(o, {
      "abc": {
        value: 123,
        writable: true
      },
      "uvw": {
        value: "test",
        writable: false
      }
    });
    

    Object.getOwnPropertyNames 方法用于列出对象的所有自带属性的名称,并作为一个数组返回。例如:

    var obj = { 'abc': 10, 'opq': 100, 'uvw': 1000};
    console.log(Object.getOwnPropertyNames(obj)); // ["abc", "opq", "uvw"]
    

    Object.getOwnPropertyDescriptor 方法用于列出对象的某个属性的各个选项。例如:

    o = {};
    Object.defineProperty(o, 'abc', {
      value: 123,
      writable: false,
      enumerable: true,
      configurable: false
    });
    console.log(Object.getOwnPropertyDescriptor(o, 'abc')); 
    // Object {value: 123, writable: false, enumerable: true, configurable: false}
    

    后面这四个 ECMAScript 5 的方法在 IE9,Firefox 4,Safari 5,Chrome 5,Opera 12 中都可以使用。

    参考资料:
    [1] ECMAScript 5 compatibility table
    [2] hasOwnProperty - JavaScript | MDN
    [3] John Resig - ECMAScript 5 Objects and Properties
    [4] Object.defineProperty - JavaScript | MDN
    [5] Object.defineProperty Function (JavaScript) - MSDN
    [6] defineProperties - JavaScript | MDN
    [7] getOwnPropertyNames - JavaScript | MDN
    [8] Object.getOwnPropertyDescriptor - JavaScript | MDN

  • 相关阅读:
    poj 2488 A Knight's Journey( dfs )
    poj 2676 Sudoku ( dfs )
    poj 3087 Shuffle'm Up ( map 模拟 )
    poj 1426 Find The Multiple( bfs )
    poj 3126 Prime Path( bfs + 素数)
    Atcoder ARC-063
    Atcoder ARC-062
    Atcoder ARC-061
    Atcoder ARC-060
    Atcoder ARC-058
  • 原文地址:https://www.cnblogs.com/zoho/p/2875163.html
Copyright © 2011-2022 走看看