美文网首页
js原型链全解

js原型链全解

作者: 幽幽_默默 | 来源:发表于2020-03-14 22:37 被阅读0次

每一个JavaScript对象(除了 null )都具有的一个属性,叫proto,这个属性会指向该对象的原型.

即对于每一个new出来的函数,我们看看都执行了些什么

1.var obj = {};

2.obj.__proto__ = Base.prototype;

3.Base.call(obj);

第一行,我们创建了一个空对象obj

第二行,我们将这个空对象的__proto__成员指向了Base函数对象prototype成员对象

第三行,我们将Base函数对象的this指针替换成obj,然后再调用Base函数,于是我们就给obj对象赋值了一个id成员变量,这个成员变量的值是”base”,关于call函数的用法。

下面举个例子。

原型对象的理解

person1实例对象的原型指向了Keith.prototype。即Keith.prototype就是一个原型对象

Keith的原型指向了Function.prototype。

Function.prototype的原型指向了Object.prototype。

Object.prototype的原型指向了Null。

理解了这个,我们再来看下面的这张图

函数的原型链图解

prototype存在的目的,由于每个对象实例中的属性和方法都在各自的实例中,其中方法是刻意共用的,为了使不同对象实例之间的方法刻意共用,于是便诞生了prototype。比如

var arr1 = [1, 0, 0, 8, 6];

var arr2 = [1, 0, 0, 8, 6, 1, 1];

arr1.sort(function(n1, n2) {

return n1 - n2;

});

arr2.sort(function(n1, n2) {

return n1 - n2;

});

console.log(arr1); //[0, 0, 1, 6, 8]

console.log(arr2); //[0, 0, 1, 1, 1, 6, 8]

console.log(arr1 === arr2);//false

console.log(arr1.sort === arr2.sort);//true

最后一行,证明了数组的方法是共用的。

相关文章

  • js原型链全解

    每一个JavaScript对象(除了 null )都具有的一个属性,叫proto,这个属性会指向该对象的原型. 即...

  • 廖雪峰JS小记

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

  • JS的__proto__和prototype

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

  • 巧解 JS 原型链

    前言: 本文章带有强烈的个人风格主义,我以自己的方式理解原型链,还请各位路过的大佬们,多多指点,有啥不懂直接提出来...

  • 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中引用类型都是对象,对象就是属性...

网友评论

      本文标题:js原型链全解

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