js原型和原型链作用,js的原型和原型链

js原型和原型链作用,js的原型和原型链,JS原型与原型链的深入理解

这篇文章主要是和你一起深入了解JS原型和原型链。原型在JavaScript中是一个很难理解的概念。本文将为您解决这个问题。感兴趣的朋友可以参考一下。

要理解原型和原型链,首先要理解公共对象和函数对象。

一、普通对象和函数对象的区别

在Javascript的世界里,有所有的对象,它们之间也有区别。我们先区分普通对象和函数对象,如下面的代码所示:

函数f1(){ };

var F2=function(){ };

var F3=new function(){ };

var O1={ };

var O2=new Object();

var O3=new f1();

console.log(对象类型);//函数

console.log(函数类型);//函数

console . log(f1类型)//函数

console . log(F2类型)//函数

console . log(F3类型)//函数

console . log(O1类型)//对象

console . log(O2类型)//对象

console . log(O3类型)//对象

从上面的代码可以看出,f1、f2、f3都是函数对象,而o1、o2、o3都是对象对象,也就是普通对象。函数对象本质上是由new function()构造的,其他都是普通对象;了解了函数和普通对象之后,后面会解释两者的区别。

二、原型

在JavaScript中,原型也是对象,原型的作用是实现对象的继承。

在js的所有函数对象中,都有一个属性原型,对应的是当前对象的原型。

而且所有的JavaScript对象都有一个_proto_ attribute(因为_proto_是非标准属性,所以只有ff和chrome浏览器支持,标准方法是Object.getPrototypeOf())。_proto_ attribute指向实例对象的构造函数的原型,可以这样理解:

var p=新人();

console . log(p . _ proto===person . prototype)//true

从上面的代码可以看出,P是实例对象,Person是P的构造器,可以看出,P的_proto_ property指向了构造器Person的原型。

下面的代码用来解释js是如何通过prototype继承的:

var parent=函数(名称){

this.name=name

}

parent . prototype . getname=function(){

返回this.name

}

var son=新父母('花花');

console . log(son . getname());//'花花'

很明显,son继承了parent原型中的函数属性getName。

三、原型链

除了Object的prototype的原型为null之外,所有的对象和原型都有自己的原型,对象的原型指向原型对象。

在多层次的关系中,多个原型层层相连,形成一个原型链。

当搜索一个对象的属性时,如果在当前对象中找不到该属性,将沿着原型链一直向上搜索,直到找到为止。如果它在原型链的顶端,它将返回undefined。

四、constructor

构造函数是由构造函数创建的实例的属性,用于指向创建当前对象的构造函数。

比如son.constructor==parent//真

这就是本文的全部内容。希望对大家的学习有帮助,支持我们。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: