zoukankan      html  css  js  c++  java
  • Object.defineProperty()

    Object.defineProperty()方法定义一个新属性,或者修改对象上的现用属性,并返回对象
     

    Object.defineProperty(obj, prop, descriptor)

    Parameters

    obj
    对象
    prop
    需要改变或定义的对象的属性
    descriptor
    描述

    Return value

    定义或改变后的对象

    descriptor中的定义的key介绍:

    configurable
    true 可以删除定义的属性
    Defaults to false.
    enumerable
    true 可以对定义的属性进行枚举
    Defaults to false.
    value
    设置属性的值
    Defaults to undefined.
    writable
    true 定义属性值可以被改变
    Defaults to false.

    An accessor descriptor also has the following optional keys:

    get
    函数返回将用作属性的值
    Defaults to undefined.
    set
    该函数将作为唯一的参数接收到被分配给属性的新值.
    Defaults to undefined.

    创建一个属性:

    ///第一种方法
    var o = {}; // 创建一个新的对象
    
    Object.defineProperty(o, 'a', {
      value: 37,
      writable: true,
      enumerable: true,
      configurable: true
    });
    
    ///第二种方法
    
    var bValue = 38;
    Object.defineProperty(o, 'b', {
      get: function() { return bValue; },
      set: function(newValue) { bValue = newValue; },
      enumerable: true,
      configurable: true
    });
    o.b; // 38

    Writable

      

    var o = {}; 
    
    Object.defineProperty(o, 'a', {
      value: 37,
      writable: false
    });
    
    console.log(o.a); // logs 37
    o.a = 25; 
    
    console.log(o.a); // logs 37. writable为false,不可改变

    Enumerable  可序列属性

      

    var o = {};
    Object.defineProperty(o, 'a', {
      value: 1,
      enumerable: true
    });
    Object.defineProperty(o, 'b', {
     value: 2,
     enumerable: false
    });
    Object.defineProperty(o, 'c', {
      value: 3
    }); 
    o.d = 4;
    
    for (var i in o) {
      console.log(i);
    }
    // logs 'a' and 'd' (in undefined order)
    
    Object.keys(o); // ['a', 'd']
    
    o.propertyIsEnumerable('a'); // true
    o.propertyIsEnumerable('b'); // false
    o.propertyIsEnumerable('c'); // false

    Configurable 可删除attribute

     
     
  • 相关阅读:
    236. 二叉树的最近公共祖先
    230. 二叉搜索树中第K小的元素
    221. 最大正方形
    软件构建模式之MVC框架初窥
    九度OnlineJudge之1020:最小长方形
    九度OnlineJudge之1018:统计同成绩学生人数
    九度OnlineJudge之1017:还是畅通工程
    向Python女神推荐这些年我追过的经典书籍
    最实用的10个重构小技巧排行榜,您都用过哪些呢?
    九度OnlineJudge之1014:排名
  • 原文地址:https://www.cnblogs.com/ouzilin/p/7614262.html
Copyright © 2011-2022 走看看