Object

作者: 招展君 | 来源:发表于2017-01-03 23:57 被阅读12次

参考来自于这里

对象实例的属性和方法

  1. hasOwnProperty 指出一个对象是否有制定名称的属性


    Paste_Image.png
    Paste_Image.png
  2. constructor 保存了当前对象的构造函数


    Paste_Image.png
  3. isPrototypeOf 判断要检查的原型链对象是否存在于指定的对象实例中。。注意这里必须要是原型链,才能检查的到


  4. prototypeIsEnumerable 判断给定的属性是否可以通过for in 给枚举出来


    Paste_Image.png
  5. toLocalString 根据代码的执行环境返回对象的字符串


    Paste_Image.png
  6. toString
  7. valueOf 返回对象的原始值


    Paste_Image.png

属性的类型

js中属性有两种类型,分别是数据属性和访问器属性。

  1. 数据属性可以理解为平时定义对象时赋予的属性,它可以进行读写。es5中定义了一些特性用来描述属性的各种特征,这些特性是内部值,不能直接访问到,通过两个方括号来进行表示。 特性有默认值,要修改默认值,必须使用ES5定义的Object.defineProperty来修改。
  2. 访问器属性跟上面的区别在于它没有数据属性的[[Writable]]和[[Value]]特性,而拥有一对getter setter函数

数据属性有4个描述其特征的特性

  1. [[Configurable]] 表示是否可以用delete操作符来删除属性 ,默认为true


    Paste_Image.png
  2. [[Enumerable]]表示能否通过for in 枚举出属性,默认true


    Paste_Image.png
  3. [[Writable]] 表示属性是否可以被修改,默认为true


    Paste_Image.png
  4. [[Value]] 表示属性的值


    Paste_Image.png

访问器属性

  1. getter 红线这里需要给个返回值, 因为getter的默认返回值为undefined


    Paste_Image.png
  2. 访问器属性可以被重写


    Paste_Image.png
  3. 访问器属性不能赋予writable 和value属性


    Paste_Image.png
  4. setter


    Paste_Image.png
  5. 严格模式下 必须set get同时设置
  6. 非严格模式下,只设置get,则属性是只读的,只设置set 则属性无法读取
  7. Object.getOwnPropertyDescriptor 需要两个参数,返回的是属性的特性


    Paste_Image.png

Object的方法

  1. 对象创建型方法
    Object.create()
  2. 对象特性型方法
  3. Object.defineProperty
  4. Object.defineProperties
  5. Object.getOwnPropertyDescriptor
  6. 属性获取型方法
  7. Object.key()
  8. Object.getOwnPropertyNames()
  9. 对象限制型方法
  10. Object.preventExtensions() /Object.isExtensible()
  11. Object.seal() /Object.isSealed()
  12. Object.freeze() / Object.isFrozen()

  • Object.create() 通过传递原型来创建新的对象,当不传递原型的时候,会如下图


    Paste_Image.png
  • 第二个参数 要传值的话,必须要按照es5的特性传值模式,如果不显示声明属性是可编辑的,那么属性的默认值就是不可编辑


    Paste_Image.png

  • Object.keys 枚举出只是自身属性的键


    Paste_Image.png
    • 上面提到的枚举特性在这里也是有效的


      Paste_Image.png
  • getOwnPropertyNames 来获取自身所有属性的键名


    Paste_Image.png

  1. Object.preventExtensions 限制对象的扩展, 设置之后,无法添加新的属性,但是已存在的属性可以被删除。 可以在对象的原型上添加属性


    Paste_Image.png
  2. Object.seal 将对象密封,无法添加/删除已有属性,也无法修改enumerable writable configurable ,但是可以修改value


    Paste_Image.png
  3. Object.freeze 冻结对象,对象无法添加/修改/删除属性,也无法修改特性值,即这个对象无法被修改,但是通过原型还是可以的


    Paste_Image.png

相关文章

网友评论

      本文标题:Object

      本文链接:https://www.haomeiwen.com/subject/hsmnvttx.html