美文网首页
对象原型中的属性及作用

对象原型中的属性及作用

作者: 多年0以后 | 来源:发表于2018-05-16 16:22 被阅读0次
  1. 所有对象的proto(对象隐式原型)均指向自身构造函数的prototype(函数显示原型)

  2. constructor 属性指向构造函数本身Object()

  3. hasOwnProperty方法检测对象自身是否包含某属性(传入属性名字符串)
    本方法区别于in运算符, 只能检测对象自有属性(in运算符可以检测到继承属性)

  4. isPrototypeOf方法检测对象自身是否处于另一个对象(参数对象)的原型链上
    本方法区别于instanceOf运算符 (instanceOf运算符检测对象是否是一个类的实例)

  5. propertyIsEnumerable方法检测对象的某属性是否可以被枚举到(for in),此方
    法 只检测自有属性,继承属性统一返回false。事实上部分预定义继承属性和自定
    义的 继承属性如没有使用属性描述符(ES5)限制其可枚举性,它们都是可以被
    for in 循环枚 举到的。

  6. 特殊属性

    • defineGetter defineSetter 非标准的方法(ES6 已经标准化)用来定义对象的属性的存取器
    • 标准方法 Object.defineProperty(obj, propertyName, configObj) 为对象添加属性并定义属性描述符
    • 数据属性 value, writable, enumerable,configurable
    • 存取器属性 get, set, enumerable,configurable
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
  }); 
  • lookupGetter lookupSetter 非标准方法 (ES6 已经标准化)
    用来获取对象属性的存取器,包括对象自身和原型中的属性,原型中的存取器属性
    是可以被继承的,在查找属性存取器时,对象的自有同名属性与原型中的同名属性
    会被同时查找(区别于获取value时自身同名属性覆盖原型同名属性的情况)
  • 标准方法 Object.getOwnPropertyDescriptor(obj, propertyName) 此方法获取的是属性的描述符对象(描述符对象中可以获取属性的存取器),
var obj = {
                get foo() {
                       return Math.random() > 0.5 ? "foo" : "bar";
                }
      };     
Object.getOwnPropertyDescriptor(obj, "foo").get
//返回
function (){return Math.random() > 0.5 ? "foo" : "bar"}
//此方法只能获取自有属性的属性描述符,对于继承属性需使用getPrototypeOf()
var obj = {};
var prototype = Object.getPrototypeOf(obj);    
Object.getOwnPropertyDescriptor(prototype, "foo").get

相关文章

  • 对象原型中的属性及作用

    所有对象的proto(对象隐式原型)均指向自身构造函数的prototype(函数显示原型) constructor...

  • JS的五种继承方式

    原型对象 每个函数都有prototype属性,他就是原型对象image.png 原型对象的作用:为每个实例对象存储...

  • 原型与原型链

    原型及原型链是什么 JS中的对象,在创建时都会有一个内置属性,即__proto__属性,该属性指向一个对象,事实上...

  • javascript学习笔记

    1. 原型对象和原型链 prototype的主要作用是继承,prototype中定义的属性和方法是留给自己的“后代...

  • 原型和原型链 prototype和__proto__

    prorotype是静态属性 proto是实例属性prototype表示类的原型对象,proto表示原型对象中定义...

  • JS原型链

    1什么是JS原型链? 通过__proto__属性将对象与原型对象进行连接. 1.1 JS原型链的作用? 组成的一个...

  • 原型和原型链

    原型 javascript中每个JS对象一定对应一个原型对象,并从通过proto属性原型对象继承方法和属性 jav...

  • javascript中面向对象编程-创建对象之原型模式

    理解名词:对象 原型对象 原型属性 函数 构造函数 实例 对象: Object,创建对象,对象属性方法原型对象:...

  • JavaScript学习笔记7_对象_4对象的原型(protot

    原型属性(prototype) 对象的原型属性是用来继承属性的。在对象创建时原型属性就已经设置好了,(参考创建对象...

  • 1.原型和原型链-作用域和作用域链

    一、请谈谈原型和原型链 原型js中每个函数都有一个属性,prototype,这个属性的属性值是一个对象,这个对象被...

网友评论

      本文标题:对象原型中的属性及作用

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