谈谈我对原型以及原型链的理解

1.在js中构建对象的方法有两种

 1.1对象字面量

 var dong={

 name:'dongli',

age:'22'

}

 1.2使用构造函数

  function dong(){

  this.name='dongli',

 this.age='22'

 }

 当需要构建的函数较少时,可以直接使用对象字面量,但当我们需要构建大量对象时,第一种方法显然有一些笨拙和重复了,这时候就可以使用构造函数了!!

 2.原型

 上面我们提到了构建对象的两种方法,相信大家还有印象,(废话,智障博主吗???好好好,不要着急,年轻人)

无论我们通过哪种方法构建的函数都会自动添加prototype和_proto_属性.这哥俩记录了对象的方法和属性(看不懂不要紧,马上就会明白了??)

有人就问了,丫的这哥俩到底是干嘛的呢???

 那谁!!把刀放下,我说还不行吗!!

prototype是一个隐式属性,直接调用不到
function f(){}
f.prototype.foo = "abc";
console.log(f.foo); //undefined

 那么prototype到底怎么用呢
  其实prototype说到底是在继承的时候用的,通俗来说就是留给他的后代用的,自己不可调用(就好像你爸买房真的是给自己住的吗,不是那是给你买的!!嗯~~真是太机智了这个比喻)

  那么后代是如何继承腹肌的原型的呢,就是通过原型链_proto_

 function f(){}
f.prototype.foo = "abc";
var obj = new f();
console.log(obj.foo); //abc

  当new一个构造函数时,实际上执行了如下操作
  1.新建一个对象
  2.拷贝(链接)父级对象的prototype到新建的对象中
  3.将这个函数通过this关键字传递到构造函数中并执行构造函数
  4.把这个变量赋值给定义的变量

今天就讲到这里了,更多的东西一时间也没有想到,脑子里就想到这些东西,等我想到更多会给大家补上!!

这是个不靠谱的博主~~~~




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值