JS原型链

作者: 哎呦_連啓 | 来源:发表于2019-05-28 00:55 被阅读0次

前一篇章讲了原型链继承,那原型链怎么理解呢,是时候来讲一下了:
我们查找一个实例对象的属性或方法,首先会在自己的实例属性或方法中查找,找到这个属性或方法,那么这属于私有属性或方法;如果没有则根据指针链(__proto__)到当前实例所属类型的原型对象上找,找到这个属性或方法,那么这个属性或方法属于公有属性或方法,若还没有,则继续通过指针链(__proto__)往上找,一直找到Object.prototype上还没有则说明这个对象是没有原型对象的

function Fn(){
        this.x = 100;
    }
    Fn.prototype.showX = function () {
        console.log(this.x)
    }
    var fn = new Fn();
    console.log(fn)

原型链在控制台展示这样的:

console.log(fn)原型链截图.png
下面是一张原型链的草图:
原型链.jpg
所谓原型链只得就是图中__proto__这一条指针链,而原型链的顶端就是Object.__proto__
每个对象都有__proto__属性,Object对象除外;
每个构造函数都有一个名为prototype的原型对象,这个原型对象同样带有__proto__属性;
每个对象的__proto__属性都指向自身构造函数的prototype原型对象。
isPrototypeOf()可以用来判断对象object1是否存在于对象object2的原型链中,是则返回true,不是返回false
    function Fn(){
        this.x = 100;
    }
    Fn.prototype.showX = function () {
        console.log(this.x)
    }
    var fn = new Fn();
    console.log(Fn.prototype.isPrototypeOf(fn));    //true

如果 object2 的原型链中包含object1,那么 isPrototypeOf 方法返回 true。
如果 object2 不是一个对象或者 object1 没有出现在 object2 中的原型链中,isPrototypeOf 方法将返回false。
需要注意的指向是
Function.prototype的proto指向其构造函数Object的prototype;
Object.prototype的prototype指向null(尽头)

console.log(Function.prototype.isPrototypeOf(Object));      //true
console.log(Object.prototype.isPrototypeOf(Function));      //true
console.log(Object.prototype.__proto__);      //null
console.log(Function.prototype.__proto__) 

附上一张完整的原型链图:


完整原型链图.jpg

相关文章

  • 廖雪峰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/bebbaqtx.html