原型链(介绍)

news/2024/11/17 21:45:17/

什么是原型链?

原型链通俗易懂的理解就是可以把它想象成一个链条,互相连接构成一整串链子!而原型链中就是实例对象和原型对象之间的链接。每个函数都有一个prototype属性,这个prototype属性就是我们的原型对象,我们拿这个函数通过new构造函数创建出来的实例对象,这个实例对象自己会有一个指针(proto)指向他的构造函数的原型对象!这样构造函数和实例对象之间就通过( proto )连接在一起形成了一条链子。

为什么要使用原型链呢?

1.为了实现继承,简化代码,实现代码重用!
2.只要是这个链条上的内容,都可以被访问和使用到!

原型链的特点

1.就近原则,当我们要使用一个值时,程序会优先查找离自己最近的,也就是本身有没有,如果自己没有,他就会沿着原型链向上查找,如果还没有找到,它还会沿着原型链继续向上查找,找到到达Object
2.引用类型,当我们使用或者修改原型链上的值时,其实使用的是同一个值!
3.JS中每个函数都存在原型对象属性prototype。并且所有函数的默认原型都是Object的实例。
4.每个继承父函数的实例对象都包含一个内部属性_proto_。该属性包含一个指针,指向父函数的prototype。若父函数的原型对象的_proto_属性为再上一层函数。在此过程中就形成了原型链。

__proto__和prototype的区别

是实例对象指向原型对象的指针,隐式原型,是每个对象都会有的一个属性。
原型链图解
下面展示一些 代码

<script>//构造函数function Person() {};//实例(每个实例对象都有一个__proto__属性指向原型对象)var zhang = new Person();//原型对象(每个函数都有一个prototype属性指向原型对象)Person.prototype;// 原型对象又有一个constructor属性指向构造函数。// 验证: console.log(Person.prototype.constructor === Person) //trueconsole.log(zhang.__proto__ === Person.prototype) //true</script>

想法: 原型对象,其实也可以看作是一个实例对象,也有__proto__属性


http://www.ppmy.cn/news/484831.html

相关文章

原型链图解

首先&#xff0c;要明确几个点&#xff1a; 1.在JS里&#xff0c;万物皆对象。方法&#xff08;Function&#xff09;是对象&#xff0c;方法的原型(Function.prototype)是对象。因此&#xff0c;它们都会具有对象共有的特点。 即&#xff1a;对象具有属性__proto__&#xff0c…

原型、原型对象和原型链

原型&#xff1a; __ proto __ 原型对象&#xff1a; prototype 每个对象中都有 __ proto __ 一、构造函数和原型 ES6之前并没有引入类的概念&#xff0c;对象不是基于类创建的&#xff0c;是用一种称为构造函数的特殊函数来定义的。 创建对象的三种方式&#xff1a; 1.通过…

带你了解原型链

了解原型链可以先看我上期发布的帖子再来看这篇会更好的理解: 详解原型对象_loulansd的博客-CSDN博客 问:什么是原型链? 得先知道什么是对象,比如一个物品一只笔就是对象,他的属性可以是黑色彩色的它的方法可以是写字,包括我们生活的万物都有自身的属性,那么我们就可以理解万…

原型和原型链(二)

文章目录 前言一、_proto_(上文提到)1、定义&#xff1a;2、小测试&#xff1a; 二、原型链1、定义及相关解释&#xff1a;2、原型链图&#xff1a; 前言 在上篇文章中对构造函数和原型对象进行了相应的总结。此文章将会对原型链进行详细的阐述。希望大家对原型和原型链的理解…

原型链的解说

首先&#xff0c;我们要知道&#xff0c;万物皆对象&#xff0c;一切的一切都是由对象构成的。 一、关于函数的原型对象 在JavaScript中&#xff0c;如果我们创建一个函数A&#xff0c;那么浏览器就会在内存空间里创建一个对象B&#xff0c;而且每个函数都会默认会有一个属性…

【js进阶】-原型/原型链

一、构造函数创建对象 我们先使用构造函数创建一个对象&#xff0c;先来认识下构造函数 function Person() { } var person1 new Person(); person1.name 张三; console.log(person1.name) // 张三在这个例子中&#xff0c;Person 就是一个构造函数&#xff0c;我们使用 ne…

JS原型、原型链到底是什么?

前言 在js的学习中&#xff0c;原型毫无疑问是一个难点&#xff0c;但也是一个不可忽视的重点。在前端面试中也是一个高频考题&#xff0c;在接下来的深入学习中&#xff0c;你会发现原型、原型链等知识点其实并不难。 1. “一切皆为对象” JavaScript是一个面向&#xff08…

原型及原型链 ①

文章目录 原型及原型链函数对象constructor 构造函数new 操作符将构造函数当作函数构造函数的问题prototype 原型理解原型对象更简单的原型语法原型的动态性原生对象的原型原型对象的问题构造函数和原型结合构造函数和原型结合 __proto__原型链关卡 本文转&#xff1a;https://…