• JS和JQ的总结:对象


    1、对象的基本操作  create  set  query delete test  enumerate

    2、对象的属性特性  可写  可枚举  可配置(是否可删除)

    3、对象的对象特性 

    对象的原型 prototype

    对象的类  标示对象类型的字符串

    对象的扩展标记  是否可添加新属性

     //创建对象的三种方法

     4、对象直接量

     var empty = {};

     var point = {x:0,y:0};

    5、new创建对象

     var o = new Object();  //空对象  和{}一样

     var a = new Array();

     6、Object.create()

     var o1 = Object.create({x:1,y:2});  //o1 继承自对象原型{x:1,y:2}

     var o2 = Object.create(null);       //o2不继承任何属性和方法

     var o3 = Object.create(Object.prototype); 

     //空对象和 {} new Object()一样

    7、属性的操作  作为关联数组的对象

     object.property

     object["property"]   散列  映射  字典 关联数组

    8、继承

     js的继承只能从父类获取属性的值,而不能修改原型链

     如果对象book为null或undefined

     book.subtitle.length会报错

      解决方法

     var len = book && book.subtitle && book.subtitle.length;

     删除属性

      delete book.subtitle

    检测属性  in  hasOwnPreperty()  propertyIsEnumerable()

     var o = {x:1};

     "x" in o

      "toString" in

     hasOwnPreperty();判断属性是否是自己的。继承属性返回false

    propertyIsEnumerable() 只有是自有属性,并可枚举

    获取所有属性

      Object.keys()

     Object.getOwnPropertyNames()

    9、属性getter和setter

     var o = {

     x: 0,

     y: 1,

     set r(value) { value = this.r;},

     get r() { return this.x + this.y;}

     };

     x数据属性,r存取器属性

    10、属性的特性  ecmascript5   老的ie不支持如下用法

     数据属性的特性:值value 可写性writable

    可枚举enumerable

     可配置configurable

    存取器属性特性:get  set

     可枚举enumerable

     可配置configurable

      //返回{value:1,writable:true,emunerable:true,configurable:true}

      Object.getOwnPropertyDescriptor({x:1},x)

      //查不到属性 返回undefined

     设置属性的特性  不能修改继承的属性特性

      Object.defineProperty()

     //设置不可枚举属性

     var o = {};

     Object.defineProperty(o,"x",{

     value:1,

    writable:true,

    emunerable:false,

    configurable:true

     })

     //设置只读

     Object.defineProperty(o,"x",{writable:false})

     修改多个属性特性

     Object.defineProperties()

    扩展Object.prototype   书 P137

     11、对象的三个属性

     prototype  class  extensible attribute

     查询对象的原型

     ecmascript5中 Object.getPrototypeOf(o1)

     ecmascript3中 o1.constructor.prototype

    通过对象直接量或new Object()方式创建的对象

     包含一个constructor的属性,指Object()的构造函数

     constructor.prototype才是真正的原型

    p.isPrototypeOf(o)检测对象p是否是o的原型

     //获取对象的类型 字符串

     Object.prototype.toString.call(o1).slice(8,-1)

     12、对象的可扩展性

     对象是否可以新加属性

     Object.preventExtensions() 设置对象不可扩展

     Object.isExtensible()

     Object.seal()  除了将对象设置为不可扩展,还将属性设置为不可配置

     Object.freeze()

     除了将对象设置为不可扩展,将属性设置为不可配置,还把属性设置为只读

     

  • 相关阅读:
    unity3D相机缓慢看向目标物体
    设计原则
    unity3D中GUI标题内文字滚动效果
    python3.6中安装PyQt报错
    codeforces 515B.Drazil and His Happy Friends
    HDU 1029 Ignatius and the Princess IV
    POJ 1052 Plato's Blocks
    Uva220 Othello
    uva201 Squares
    uva1587 Box
  • 原文地址:https://www.cnblogs.com/Xu-songsong/p/6032395.html
Copyright © 2020-2023  润新知