面试题常考&必考之--js中的难点!!!原型链,原型(__proto__),原型对象(prototype)结合例子更易懂...

1》首先,我们先将函数对象认识清楚:

 

 

 

补充snow的另一种写法:

var snow =function(){};

  

2》其次:就是原型对象

每当我们定义一个函数对象的时候,这个对象中就会包含一些内置的属性,其中有一个属性叫prototype(原型对象)

原型对象不是谁都有的,是函数对象特有的 ,普通对象没有。但是普通对象有一个__proto__属性(叫原型)

所有对象都有__proto__属性(原型)。

 

总结:函数对象有原型对象(prototype)属性和原型对象中的原型(__proto__)属性。

函数对象中的原型对象是普通对象也就是函数对象的原型对象是有原型属性的)

   普通对象只有原型(__proto__)属性。

所有的对象都有一个原型(__proto__)属性。

 

特例:Function.paototype依然是函数对象,不是普通对象。(特殊特殊,单独记!!!)

但是这个函数对象里面就没有prototype属性了(也就是函数对象的原型对象没有原型对象了)

验证:console.log(typeof(Function.prototype))//function

console.log(typeof(Function.prototype.prototype))//undefine

 

3》原型继承实例

 

 

4》那么啥是原型链呢?

上面提到,所有的对象都有一个属性叫做原型(__proto__)。----------------------------(在上面总结出绿色的文字处)

那么这个原型属性是干么的呢?是用于指向创建它的函数对象的原型对象(是不是一脸懵!!!)

仔细看实例:

图A:

 

 

 

 那么,people的原型去找谁呢?

图B:

 

 结合图A和图B我们画出的原型链的图为:

 

 

5》原型链的定义总结:

      a.    在js中对象分为普通对象和函数对象,那么函数对象是通过New Function()创建的对象。除了函数对象都是普通对象。

      b.    所有对象中都有原型。但是函数对象中有原型对象(prototype),这是函数对象所特有的,函数对象的原型对象中有原型。普通对象中有原型。

      c.    所有对象都有原型属性,原型属性是用来指向创建它的函数对象的原型对象的。

 

转载于:https://www.cnblogs.com/snowbxb/p/11556171.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值