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

     
     
  • 相关阅读:
    uva 1511 最小生成树
    百度之星2017初赛A-1006-度度熊的01世界
    工作5年总结-总结这两年在阳光的日子
    在visual studio中查看源代码
    根据C#编程经验思考编程核心
    项目的可维护可持续性思考
    java学习
    What is ASP.NET SignalR
    WCF 和 ASP.NET Web API
    wcf服务
  • 原文地址:https://www.cnblogs.com/ouzilin/p/7614262.html
Copyright © 2011-2022 走看看