为了账号安全,请及时绑定邮箱和手机立即绑定

关于javascript的原型链的问题,var obj = new foo()的意思?

关于javascript的原型链的问题,var obj = new foo()的意思?

Gavin_Alison 2016-07-19 16:41:52
求大神解答!var obj = new foo()的意思?是不是obj指向 foo.prototype,还是指向foo,foo是对象,foo.prototype是原型,这个问题是在《javscript深入简出》的4-2创建对象中的。希望能对着视频中的图讲解一下,谢谢了!
查看完整描述

4 回答

已采纳
?
tyc1

TA贡献9条经验 获得超7个赞

var obj = new foo();

  1. 首先new后面的全部是构造函数,所以foo是一个构造函数

  2. 每个函数都会有一个prototype属性,它的类型是object,所以叫对象属性,还有一个constructor属性,指向的就是function foo(){}这个函数

  3. new出来的都是对象,所以obj是一个对象,对象上有一个__proto__标签,但这个标签不对外暴露,这个跟跟原型prototype是不一样的,不要弄混淆了。

  4. 这个__proto__标签指向的就是foo的原型,即foo.prototype

查看完整回答
2 反对 回复 2016-07-19
?
Despicableme01

TA贡献11条经验 获得超9个赞

foo()是一个构造函数,构造函数是用来新建并初始化一个新对象的函数。而构造函数中的属性和构造函数原型中的属性就初始化了这个新对象的自有属性和共有属性。

构造函数中的属性是 使用这个构造函数实例化出来的新对象的自有属性,也就是相当于复制了一份给了这个新对象,所以用delete方法删除新对象的一个自有属性的话,新对象中的这个自有属性就不复存在了。

而构造函数中的原型是 使用这个构造函数实例化出来的新对象的共有属性,所有用这个构造函数实例化出来的新对象的共有属性都指向这个原型中的对象。对共有属性的修改删除不会影响这个原型对象。对共有属性的修改相当于给新对象添加了一个新的自有属性。

查看完整回答
1 反对 回复 2016-07-19
  • Gavin_Alison
    Gavin_Alison
    谢谢你的解答,但是其他的更详细,你也可以看看。
?
刚毅87

TA贡献345条经验 获得超309个赞

obj为 foo 实例化的对象.

查看完整回答
反对 回复 2016-07-19
?
Gavin_Alison

TA贡献8条经验 获得超10个赞

希望能对着视频中的图讲解一下,谢谢了!

查看完整回答
反对 回复 2016-07-19
  • 4 回答
  • 2 关注
  • 2416 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信