原型,原型对象,原型链

原型,原型对象,原型链

原型和原型对象

只要创建一个函数,浏览器就会自动为其分配一个原型,可以通过prototype属性访问到原型,原型也可以通过constructor属性访问到其对应的函数,此外,通过函数创建的实例对象默认可以通过_proto_属性访问到原型对象(注:_proto_属性不是标准属性,最好不要用在生产环境中)。

Person(name,age){
   this.name=name;
   this.age=age;
}
console.log(Person.prototype);//输出对应原型
console.log(Person.prototype.constructor);//输出函数本身

var zs=new Person("秋风",100)//创建了一个实例对象
console.log(zs._proto_);//指向原型




为什么要设置原型

方法如果写在原型上,可以解决内存浪费的问题,而且也可以很好的解决函数写在外面容易重名的问题。如Array对象的方法,如foreach,every,都是写在原型上,可以通过实例去访问。

Person(name){
this.name=name;
}
Person.prototype.sayHi=function(){
console.log("你好呀");
}
var zs=new Person(“秋月”);
zs.sayHi();
原型链

从前面已经知道,函数创建出来的实例对象默认是可以访问到原型的,但其实原型也是其他的函数的实例,可以一直往上寻找,直到找到null,所以就形成了一个链状结构。

在这里插入图片描述
所以当实例查找某个属性时,先在自己身上找看有没有,如果没有就沿着原型链往上面找,直到找到null都没有的话,就返回undefined。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值