求大神解答!var obj = new foo()的意思?是不是obj指向 foo.prototype,还是指向foo,foo是对象,foo.prototype是原型,这个问题是在《javscript深入简出》的4-2创建对象中的。希望能对着视频中的图讲解一下,谢谢了!
4 回答
已采纳
tyc1
TA贡献9条经验 获得超7个赞
var obj = new foo();
首先new后面的全部是构造函数,所以foo是一个构造函数
每个函数都会有一个prototype属性,它的类型是object,所以叫对象属性,还有一个constructor属性,指向的就是function foo(){}这个函数
new出来的都是对象,所以obj是一个对象,对象上有一个__proto__标签,但这个标签不对外暴露,这个跟跟原型prototype是不一样的,不要弄混淆了。
这个__proto__标签指向的就是foo的原型,即foo.prototype
Despicableme01
TA贡献11条经验 获得超9个赞
foo()是一个构造函数,构造函数是用来新建并初始化一个新对象的函数。而构造函数中的属性和构造函数原型中的属性就初始化了这个新对象的自有属性和共有属性。
构造函数中的属性是 使用这个构造函数实例化出来的新对象的自有属性,也就是相当于复制了一份给了这个新对象,所以用delete方法删除新对象的一个自有属性的话,新对象中的这个自有属性就不复存在了。
而构造函数中的原型是 使用这个构造函数实例化出来的新对象的共有属性,所有用这个构造函数实例化出来的新对象的共有属性都指向这个原型中的对象。对共有属性的修改删除不会影响这个原型对象。对共有属性的修改相当于给新对象添加了一个新的自有属性。
添加回答
举报
0/150
提交
取消