美文网首页
js原型链

js原型链

作者: pretty_rain | 来源:发表于2019-06-19 11:40 被阅读0次

通过一个案例理解原型链

    Function.prototype.a = "a";
    Object.prototype.b = "b";
    function Person(){}
    console.log(Person);    //function Person()
    Person p = new Person();
    console.log(p);         //Person {} 对象
    console.log(p.a);       //undefined
    console.log(p.b);     //b

p是Person()的实例,是一个Person对象,它拥有一个属性值 __ proto __ ,并且__ proto __是一个对象,包含两个属性值constructor和 __ proto __

    console.log(p.__proto__.constructor);
    console.log(p.__proto__.__proto__);

p. __ proto__.constructor得到的是Person()这个构造函数
p.__ proto __ .__ proto __ .constructor得到拥有多个参数的Object()函数,Person.prototype的隐式原型的构造函数指向Object(),即Person.prototype. __ proto __ .constructor == Object()

image.png

总结:

1.查找属性,如果本身没有,则会去proto中查找,也就是构造函数的显式原型中查找,如果构造函数中也没有该属性,因为构造函数也是对象,也有proto,那么会去它的显式原型中查找,一直到null,如果没有则返回undefined
2.p.__ proto __.constructor == function Person(){}

3.p.__proto __.__proto __== Object.prototype

4.p.__proto __.__proto __.__proto __== Object.prototype.__proto __ == null

5.通过__proto __形成原型链而非protrotype

分析图

image.png

完整的原型链

Product.prototype={}
var p = new Product();
console.log(p.__proto__ == Product.prototype);
console.log(Product.__proto__ == Function.prototype);
console.log(Function.prototype.__proto__ == Object.prototype);
console.log(Product.prototype.__proto__ == Object.prototype);
console.log(Object.prototype.__proto__ == null);
var kong = {};//Object对象
console.log(kong.__proto__ == Object.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/ynehqctx.html