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

     
     
  • 相关阅读:
    ORACLE【0】:基本操作
    ORACLE【3】:分区表以及分区索引
    ORACLE【2】:锁机制及解锁
    log4j学习一:解决系统日志错位问题
    使用一个非堵塞的socket用于接收http请求
    Python中文转换报错 'ascii' codec can't decode byte 0xe8 in position
    首次使用Redis记录【3】
    xsi:schemaLocation有何作用
    【转】【redis】3.Spring 集成注解 redis 项目配置使用
    maven仓库地址
  • 原文地址:https://www.cnblogs.com/ouzilin/p/7614262.html
Copyright © 2011-2022 走看看