原型链图解

原型链.png

注解
  • 红虚线即原型链,各种实例都是经过原型链继承到各数据类型自己的方法和属性。好比Object原型对象包含着对象的原生方法。
  • 函数实例经过原型链指向了Object的原型,因此函数实例也可做为对象使用。好比Jquery,Jquery.ajax()就是当对象使用,Jquery("div")就是当函数使用。
相关扩展
  • instanceof运算符用于测试构造函数的prototype属性是否出如今对象的原型链中的任何位置。是的话,即此对象就是此构造函数的实例。ajax

    new Function() instanceof Object 
    // true 
    // 函数是 Object的实例。
    复制代码
  • hasOwnProperty判断一个对象自己是否有此名称的属性,此方法没法检查该对象的原型链中是否具备该属性,该属性必须是对象自己的一个成员。浏览器

  • in判断的是对象的全部属性,包括对象实例及其原型链的属性函数

  • 改变一个对象的 Prototype 属性,是一个很是影响性能的操做,若是你关心性能,你就不该该在一个对象中修改它的 Prototype.。好比obj.__proto__ =或者Object.setPrototypeOf等操做。能够使用 Object.create()建立一个新对象,并指定某个对象为它的原型对象。性能

  • Object.prototype.__proto__ 已被大多数浏览器厂商所支持的今天,其存在和确切行为仅在ECMAScript 2015规范中被标准化为传统功能,以确保Web浏览器的兼容性。为了更好的支持,建议只使用 Object.getPrototypeOf()测试

  • Object.getPrototypeOf()是替代__proto__用来获取实例对象的原型,并不能获取构造函数的prototype。根据方法的名称理解,很容易混淆它的用法。ui

相关文章
相关标签/搜索