美文网首页
js 原型链

js 原型链

作者: _旁观者_ | 来源:发表于2019-02-22 15:47 被阅读0次

知识点


1, 只要是函数就有 prototype__proto__ , 只要是对象就有 __proto__ 属性
对象无 prototype 属性 构造函数有 proto prototype 属性.png
2, 通过构造函数可以创建实例对象实例对象__proto__ 指向 构造函数 的 prototype

_proto_ 作用是指向其构造函数的prototype , 且构造函数的prototype 是一个对象


注意是构造函数的prototype,而非构造函数,因此在创建构造函数时,如果要添加属性方法只能添加到 构造函数的prototype上,实例对象才能被继承
3,函数的 prototype属性中有constructor,该属性指向函数本身

通过创建实例对象解释原型链

  • var obj = {} 方法创建
    var obj = {}
    console.log(obj.__proto__ === Object.prototype)  
    console.log('Object.prototype', Object.prototype)
    console.dir(Object.prototype.__proto__)

结果如下:


原型链为:


  • 通过构造函数创建对象和函数的原型链
    • 1 对象
      function Person (name, age) {
          this.name = name;
          this.age = age;
      }
      var person1 = new Person('张三', 14)
      console.log(person1)
    

    如图:



    原型链为:



  • 2 函数
  var fn = new Function()
  console.dir(fn)

打印结果:



原型链:



  • 3 Object.create(Obj) 创建对象
    实现原理:
Object.create =  function (o) {
        var F = function () {};
        F.prototype = o;
        return new F();
    };

_相当于创建一个实例对象, 对象的 __proto__ 指向的是传入的参数(即对象本身),而不是 对象的prototype _

var ob = {}
    var aaa = Object.create(ob)
    console.log(aaa)
    console.log(aaa.__proto__ === ob)
    console.log(ob.__proto__ === Object.prototype)

原型链图:



补充

var aa = function () {}
console.log(aa.prototype.__proto__ === aa.__proto__.__proto__) // true
// 可以把实例函数  aa.prototype 看做 { constructor: aa,__proto__:Obeject.prototype对象 } 

相关文章

  • 廖雪峰JS小记

    (function(){})() 原型,原型链 浅谈Js原型的理解JS 原型与原型链终极详解 对象 对象:一种无序...

  • JS的__proto__和prototype

    最近在回顾JS的原型和原型链的知识,熟悉JS的同学都知道JS的继承是靠原型链实现的,那跟原型链相关的属性__pro...

  • Javascript(三)之原型继承理解

    进阶路线 3 原型继承 3.1 优秀文章 最详尽的 JS 原型与原型链终极详解 一 最详尽的 JS 原型与原型链终...

  • 从实现角度分析js原型链

    从实现角度分析js原型链 欢迎来我的博客阅读:《从实现角度分析js原型链》 网上介绍原型链的优质文章已经有很多了,...

  • JS原型链

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

  • 关于JS中的原型和原型链

    目录 关于js 对象和原型 原型链 基于原型链的继承 参考资料ECMAScript 6 入门JavaScript原...

  • js_继承及原型链等(四)

    js_继承及原型链等(三) 1. 继承 依赖于原型链来完成的继承 发生在对象与对象之间 原型链,如下: ==原型链...

  • 2022前端高频面试题

    JS相关 1.原型和原型链是什么 原型和原型链都是来源于对象而服务于对象的概念js中引用类型都是对象,对象就是属性...

  • JavaScript原型链

    js原型链 原型链是JS面向对象的基础非常重要 所有对象只有__proto__属性,而函数具有prototype属...

  • web前端面试之js继承与原型链(码动未来)

    web前端面试之js继承与原型链(码动未来) 3.2.1、JavaScript原型,原型链 ? 有什么特点? 每个...

网友评论

      本文标题:js 原型链

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