视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
js对象的详细介绍
2020-11-27 20:18:22 责编:小采
文档


a.  js对象都是关联数组

b.  inherit();返回一个继承自原型对象p的属性的新对象

对象的方法:

  创建(create) 设置(set) 查找(query) 删除(delete) 检测(test)和枚举(enumerate)

创建对象的方法:

  对象直接量 关键字new es5中的Object.create()

  var aa=Object.create({"x":0,"y":1})

属性的读取和修改:

  1.通过 . 连接 属性不可以改变,不能在运行时更改

  2.通过object['xxx']; 属性可以是变量,比如 object['xx'+a]; a可以是个变量,这样属性就不确定了,可以在运行中更改

  3.查询一个没有的属性会返回undefined

  4.查询一个对象的属性,如果对象不存在,就会抛出一个错误。如果查询某对象的属性,不让他报错可以这样:

    var a=b&&b.c&&b.c.d;

属性的删除

  1. delete只能断开宿主与宿主对象的联系,而不会去操作属性中的属性,不能删除通过变量声明或函数声明创建的全局全局对象属性,成功返回true,失败返回false

    delete a.b//a不再拥有属性b

    delete a['b']//a不再拥有属性b

属性的检测

  1.in运算符,hasOwnProperty(),propertyIsEnumerable()

    in左侧属性名,有侧是对象如果对象的自有属性或继承属性包含这个属性就返回true,否则false

    var a={x:1} a.hasOwnPreperty('x');//true

    propertyIsEnumerable()是hasOwnPreperty()的增强版,只有属性是可枚举的,并且属于这个对象,才返回true

  2.最简单的方法!==是否为undefined

属性的枚举

  1.在代码中给对象添加的所有属性都是可枚举的,在for/in中我们需要跳过一些属性

    for(p in o){

      if(!o.hasOwnproperty(p)) continue ;//跳过继承属性

    }

    for(p in o){

      if(typeof o[p]==="function") continue ;//跳过方法

    }

  2.在es5中多了两个函数

    Object.keys();//返回一个数组,这个数组由对象中可枚举的自有属性组成

    Object.getOwnPropertyNames();//返回对象中所有自有属性的名称

属性getter和setter (存取器属性)

  1.var 0={

    a:1,//普通的数据属性

    //存取器属性都是成对定义的函数

    get b(){这里是函数体},

    set c(){这里是函数体}

}

对象的三个属性

  1.原型属性:

    var p={x:1};//定义一个原型对象

    var o=Object.create(p);使用这个原型创建一个对象

    p.isPrototypeOf(0);//true,o继承自p

    Object.prototype.isPrototypeOf(o);//p继承自Object.prototype

  2.类属性

  3.可扩展性 通过把对象传入Object.esExtensible()判断对象是否是可扩展的

    Object.prevenExtensions()将带转换的对象作为参数传进去,就会变成不可扩展的,注意,转换成就不能转换回来了

    Object.seal()不仅能够把对象设为不可扩展,而且能把其自身的的所有自有属性设为不可配置

    isSealed()检测对象是否封闭

    Object.freeze() 冻结,不光不可配置,而且止咳可读

    Object.isFrozen() 检查对象是否冻结

对象序列化

  1:JSON.stringify();//转换为JSON字符串

  2::JSON.parse();//转换为对象

对象方法:

  1.toString();

  2.toLocaleString();

  3.toJSON();

  4:valueOf();

下载本文
显示全文
专题