zoukankan      html  css  js  c++  java
  • Object 的使用

    Object 是构造函数 , 同时作为所有对象的父级.它的原型中很对对象操作的很多方法值得深究.

    趁此次复习,现将所有函数的作用简单罗列,带日后再慢慢丰富这篇文章的羽翼.

    Object.assign()
      通过浅复制一个或多个对象来创建一个新的对象。功能类似 $.extend

    Object.create( prototype )

      根据传入的 原型对象 来创造一个新对象,可以借此来实现集成. 

     

    // Shape - superclass
    function Shape() {
      this.x = 0;
      this.y = 0;
    }
    
    // superclass method
    Shape.prototype.move = function(x, y) {
      this.x += x;
      this.y += y;
      console.info('Shape moved.');
    };
    
    // Rectangle - subclass
    function Rectangle() {
      Shape.call(this); // call super constructor.
    }
    
    // subclass extends superclass
    Rectangle.prototype = Object.create(Shape.prototype);
    Rectangle.prototype.constructor = Rectangle;
    
    var rect = new Rectangle();
    
    console.log('Is rect an instance of Rectangle?',
      rect instanceof Rectangle); // true
    console.log('Is rect an instance of Shape?',
      rect instanceof Shape); // true
    rect.move(1, 1); // Outputs, 'Shape moved.'

    Object.defineProperty( obj, 属性,{

      // 是否可枚举 是否会被  for…in 循环到

      enumerable: false,

      // 为true时,属性可以改变,也可以删除

      configurable: false,

      // 是否可以更改

      writable: false,

      // 值
      value: "static"

      // set ,get 与 writable,value 不可同时出现

      // 有 set 或 get 则为存取描述符 ,否则为 数据描述符

      get : function(){
        return bValue;
      },
      set : function(newValue){
        bValue = newValue;
      }

    } )

    var o = {};
    
    o.a = 1;
    // 等同于 :
    Object.defineProperty(o, "a", {
      value : 1,
      writable : true,
      configurable : true,
      enumerable : true
    });
    
    
    // 另一方面,
    Object.defineProperty(o, "a", { value : 1 });
    // 等同于 :
    Object.defineProperty(o, "a", {
      value : 1,
      writable : false,
      configurable : false,
      enumerable : false
    });

    Object.definedProperties( obj ,prop )

      功能同上,不同之处是在可以同时修改多个属性

    var obj = {};
    Object.defineProperties(obj, {
      'property1': {
        value: true,
        writable: true
      },
      'property2': {
        value: 'Hello',
        writable: false
      }
    });

    Object.freeze( obj )

      将 obj 的属性冻结,无法修改, 只是浅冻结, 不影响属性对象的属性修改

    Object.is( value1 , value2 )

    判断规则:

      Object.is() 判断两个值是否相同。如果下列任何一项成立,则两个值相同:

    两个值都是 undefined
    两个值都是 null
    两个值都是 true 或者都是 false
    两个值是由相同个数的字符按照相同的顺序组成的字符串
    两个值指向同一个对象
    两个值都是数字并且
    都是正零 +0
    都是负零 -0
    都是 NaN
    都是除零和 NaN 外的其它同一个数字

    Object.seal( obj )

      将 obj 密封,不可以添加新属性,属性不可删除

  • 相关阅读:
    SQL Azure (17) SQL Azure V12
    Microsoft Azure News(5) Azure新DV2系列虚拟机上线
    Azure Redis Cache (3) 在Windows 环境下使用Redis Benchmark
    Azure PowerShell (11) 使用自定义虚拟机镜像模板,创建Azure虚拟机并绑定公网IP(VIP)和内网IP(DIP)
    Windows Azure Virtual Machine (31) 迁移Azure虚拟机
    Windows Azure Web Site (16) Azure Web Site HTTPS
    Azure China (12) 域名备案问题
    一分钟快速入门openstack
    管理员必备的Linux系统监控工具
    Keepalived+Nginx实现高可用和双主节点负载均衡
  • 原文地址:https://www.cnblogs.com/xiaxiaodong/p/8280616.html
Copyright © 2011-2022 走看看