javascript里的原型链

司徒海棠      2022-02-07     653

关键词:

原型对象也是普通的对象,是对象一个自带隐式的__proto__属性,原型也有可能有自己的原型,如果一个原型对象的原型不为null的话,我们就称之为原型链。原型链是由一些用来继承和共享属性的对象组成的(有限的)对象链。

原型对象中的属性可以被多个实例共享。原型对象存在于构造函数的属性(prototype)中,prototype的值是一个Object类型数据(对象)。

JavaScript的数据对象有哪些属性值呢,举几个简单的栗子:

writable:这个属性的值是否可以改;

configurable:这个属性的配置是否可以删除,修改;

enumerable:这个属性是否能在for...in循环中遍历出来或在Object.keys中列举出来。

value:属性值。

构建对象时将方法放于该构造函数的原型对象中,可以解决该对象创建多个实例造成的内存冗余问题。(解决内存冗余的原理就是因为原型对象中的属性可以被多个实例共享)

原型链的查找规则是这样的:在调用一个对象的属性时候,先从实例本身开始查找该属性,若能找到则直接使用,否则到该实例的原型对象中进行查找;若原型对象中无法找到则会向原型对象下的原型对象继续查找,直到找到Object基类的原型中,若还是找不到则会执行动态创建属性。(以上描述的原型对象是指__proto__属性)

在JavaScript中,有一个函数,执行对象查找时,永远不会去查找原型,这个函数就是HasOwnProperty

当为一个对象中属性赋值时,先从实例本身查找,实例中存在该属性则会覆盖实例中的属性值,否则直接在该实例中创建属性。(不会影响到原型中的同名属性)

 

javascript原型链

 原型链:实例对象与原型之间的连接,叫做原型链原型链的最外层:Object.prototypefunctionAaa(){//this.num=20;}//Aaa.prototype.num=10;Object.prototype.num=30;vara1=newAaa();alert(a1.num);所以找属性的时候,其实是一级一级找,先实例本身下,然后就是... 查看详情

javascript的原型原型链原型链继承

原型 在javascript中,原型分有两种:显示原型(prototype)和隐式原型(__proto__)。__proto__(隐式原型)    JavaScript中任意对象都有一个内置属性[[prototype]],在ES5之前没有标准的方法访问这个内置属性,但是大多... 查看详情

javascript之继承(原型链)

JavaScript之继承(原型链)  我们知道继承是oo语言中不可缺少的一部分,对于JavaScript也是如此。一般的继承有两种方式:其一,接口继承,只继承方法的签名;其二,实现继承,继承实际的方法。JavaScript不支持签名,因此只... 查看详情

javascript原型链

 注意:1.参考:小角度看JS原型链。2.f.prototype.constructor属性并不可靠。     查看详情

javascript扩展原型链浅析

...简单的概念介绍和解析,本文将浅析一些原型链的扩展。javaScript原型和原型链http://lewyon.xyz/prototype.html扩展原型链使用new操作符利用原型是对象的特性,实例化对象的时候,继承多个构造函数的属性和方法兼容性:支持目前 查看详情

javascript中的原型和原型链

...prototype对象,用于表示类型之间的关系;原型链指的是在JavaScript中对象之间的继承是通过prototype对象指向父类对象,直到指向Object对象为止,这样就形成了一个原型指向的链条,专业术语称之为原型链。举例:Student——>Person... 查看详情

javascript之继承(原型链)

  我们知道继承是oo语言中不可缺少的一部分,对于JavaScript也是如此。一般的继承有两种方式:其一,接口继承,只继承方法的签名;其二,实现继承,继承实际的方法。JavaScript不支持签名,因此只有实现继承。其中实现继... 查看详情

javascript原型和原型链

前言在了解原型和原型链之前,我们先了解一部分概念,constructor,prototype,proto。constructor在之前判断数据类型的文章:javaScript常见数据类型检查校验有提到过关于构造函数的属性constructorconstructor的是返回创建实例对象的 查看详情

《javascript闯关记》之原型及原型链

原型链是一种机制,指的是JavaScript每个对象都有一个内置的__proto__属性指向创建它的构造函数的prototype(原型)属性。原型链的作用是为了实现对象的继承,要理解原型链,需要先从函数对象、constructor、new、prototype、__proto__这... 查看详情

浅谈javascript的原型及原型链

 浅谈javascript的原型及原型链 这里,我们列出原型的几个概念,如下:prototype属性[[prototype]]__proto__prototype属性只要创建了一个函数,就会为该函数创建一个prototype属性,指向该函数的原型对象。实例对象是不会拥有该属... 查看详情

javascript原型原型链

一.普通对象与函数对象JavaScript中,万物皆对象!但对象也是有区别的。分为普通对象和函数对象,Object、Function是JS自带的函数对象。下面举例说明varo1={};varo2=newObject();varo3=newf1();functionf1(){};varf2=function(){};varf3=newFunction(‘str‘,... 查看详情

javascript原型与原型链

...例与原型原型的原型原型链阐述【prototype属性】:在JavaScript中,每个对象都有一个prototype属性,这个属性指向函数的原型对象。prototype属性在JavaScript中,每个函数都有一个prototype属性࿰ 查看详情

javascript原型链

前言JavaScript不包含传统的类继承模型,而是使用prototypal原型模型。虽然这经常被当作是JavaScript的缺点被提及,其实基于原型的继承模型比传统的类继承还要强大。实现传统的类继承模型是很简单,但是实现JavaScript中的原型继... 查看详情

javascript--原型链

原型链一.构造函数与原型链的关系博客中:http://www.cnblogs.com/shuiyi/p/5305435.html的图   例子:1<!DOCTYPEhtml>2<htmllang="en">3<head>4<metacharset="UTF-8">5<title>Title</title 查看详情

javascript原型及原型链详解

 我们创建的每个函数都有一个prototype(原型)属性,这个属性是一个指针,指向一个原型对象,而这个原型对象中拥有的属性和方法可以被所以实例共享。functionPerson(){}Person.prototype.name="Nicholas";Person.prototype.age=29;Person.prototyp... 查看详情

javascript原型原型链神图

理解下面的神图,理解js原型、原型链1、每个对象都有自己的原型对象,每个对象都有一个prototype属性,该属性是一个指针,指向该对象的原型对象,原型对象中存放了一堆特定类型的实例所共享的属性和方法,原型对象也有自... 查看详情

介绍下javascript原型和原型链的特点?

JavaScript原型:每个对象都会在其内部初始化一个属性,就是prototype(原型)。 原型链:当我们访问一个对象的属性时,如果这个对象内部不存在这个属性,那么他就会去prototype里找这个属性,这个prototype又会有自己的prototype,... 查看详情

5.javascript原型链和继承详解(代码片段)

JavaScript原型链和继承详解上一篇JavaScript作用域和闭包详细总结下一篇JavaScript浅层克隆和深层克隆文章目录JavaScript原型链和继承详解一、原型二、原型链原型链图解了解this与call/apply方法三、继承一、原型1.定义:原型是funct... 查看详情