看了高程
还是不懂为什么this会指向 new SubType()这个对象
麻烦dalao解答一波 小白在此谢过
call 方法就是把目标方法绑定参数对象去执行。func.call(obj)
,此时func的执行体如果有this的话,其this指向obj~
var inst = new SubType();
首先,SubType构造函数的this就是指向SubType实例,然后
SuperType.call(this)
注意这里的this就是SubType实例,此时也就是相当于执行 SubType实例.SuperType()
这个时候SuperType函数里的this指向的是SubType实例,所以执行体里的 this.colors
就是ins.colors
了。
当我们new一个函数的时候发生了什么?
1、创建了一个新的对象;
2、这个新对象会被执行[[prototype]]连接;
3、函数的this操作会绑定到这个对象上;
4、如果函数没有return一个对象,那么这个对象就会被返回;
所以,应该说明白了把,楼主可以用控制台试试
13 回答12.8k 阅读
7 回答1.9k 阅读
3 回答1.1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
6 回答884 阅读✓ 已解决
6 回答1k 阅读
2 回答1.3k 阅读✓ 已解决
觉得回答这个问题需要弄明白
函数的调用模式
this
这两个问题在javascript中都相对复杂,想要说清楚,还是蛮难的,我们就以上两个问题作部分解答
函数的调用模式之
函数调用
你猜一下最终输出啥
那这样呢?
没错和上面是一样的还是输出
qianlong
和true
再接下来
这次又是什么呢?
得出结论
再来,new中的this指的是什么东西
你发现了啥? 使用new来调用函数的时候,内部的this就是指向,最终生成的那个
对象
所以明白了以上两点,现在开始解答你的问题。
不懂为什么this会指向 new SubType()这个对象?
所以,楼主你应该明白了