javaScript中原型与原型链是什么

  

javaScript中原型与原型链是什么?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!

<强> javaScript <强>栏目简单明了介绍原型与原型链。

在javaScript中,原型和原型链是不可避免的重要概念,那么怎么去理解原型和原型链呢?下面是我对原型和原型链的理解和总结。也许有些理解还比较浅薄,随着时间的推移和理解的深入,以后还会补充。如果大家发现我理解的有问题,欢迎大家在评论中指正。

1。为什么javaScript设计为基于原型的模式

在以往的学习过程中,我们曾通过学习面向对象语言java了解到其有三个要素:封装,继承,多态。关于继承,java与javaScript其实两者并不完全一样。
,,,那么javascript到底是如何设计出来的呢?早期,浏览器只能浏览网页内容,而不能进行用户交互,也就说当我们输入账号密码进行登录时,浏览器不能对其输入内容进行判断,需要通过服务器进行判断,而网景公司为了解决这一问题,发明一种与java搭配使用的辅助脚本语言,并在语法上有些类似。由此可以看的出,javascript受到java的影响,其都是对象类型,有对象则就会涉及到继承机制,那么JS的继承机制是怎么样呢?
,,,JS参考java的设计,使用新操作符生成对象,但其与java不同的是新后面跟的是Construtor而不是类。

//java中生成一个对象   人p=new()//人指的是类名//js生成一个对象   函数的人(年龄){   这一点。年龄=年龄   这一点。国家=& # 39;中国# 39;   }   var父亲=新人(42)//人指的是构造函数   明明var=新人(11)复制代码

2。构造函数构造函数

构造函数也是普通函数,其也有原型属性,与普通函数的区别是其要求首字母大写。若构造函数使用新操作符调用时,其需要执行四个步骤:
,,,1. 创建一个新的对象
,,,2. 将这个指向这个新的对象
,,,3.执行构造函数,给新对象添加属性和方法
,,,4. 返回这个新对象

功能食品(名字){   this.name=名字   这一点。吃=function () {   console.log(& # 39;吃# 39;)   }   }   var食物=new(& # 39;香蕉# 39;)复制代码

3。原型原型

任何一个函数都有一个原型属性,它指向原型对象。那么原型其实就是一个对象,在原型上定义的属性,通过继承(新操作符实现),实例化的对象也拥有了该属性。
,,,原型与构造函数的关系:构造函数内有一个原型属性,通过该属性可以访问到原型。

 javaScript中原型与原型链是什么

以构造函数中的代码为例,食物就是构造函数,食物。原型就是原型,食物就是参照食物。原型生成的一个对象。

 javaScript中原型与原型链是什么

4。实例实例

实例是指一个构造函数在原型上创建可以“继承“的属性和方法,并通过新操作符创建的对象。

 javaScript中原型与原型链是什么

简单来说,我们使用新操作符创建一个食物实例,并且可以通过instanceof检验实例与构造函数之间的关系。

功能食品(名字){   this.name=名字   这一点。吃=function () {   console.log(& # 39;吃# 39;)   }   }   var食物=new(& # 39;香蕉# 39;)//实例化   var res=食物instanceof//检查食物是否为食物实例   console.log (res)//真实复制代码

当我们在原型上定义一个属性时,实例也会“继承“这个属性。

功能食品(名字){   this.name=名字   这一点。吃=function () {   console.log(& # 39;吃# 39;)   }   }   var食物=new(& # 39;香蕉# 39;)//实例化   var res=食物instanceof//检查食物是否为食物实例   console.log (res)//真实的//原型定义属性   Food.prototype。类型=& # 39;对象命名食物# 39;   var foodRes=食物。//实型例继承的属性   console.log (foodRes)//对象命名食品复制代码

5。隐式原型_ <强> _proto__

任何对象在创建时都会有一个_ <强> _proto__ 属性,它指向产生当前对象的构造函数的原型对象。由于该属性并非标准规定的属性,所以不要随便去更改该属性的值,以免破坏原型链。也就是说,实例可以通过_

javaScript中原型与原型链是什么