为何两次console.log输出结果一致?JavaScript构造函数实例疑问
为啥这段代码输出sum{} sum{}?
先看你运行的代码:
function sum(){ console.log(this); } var sum1= new sum(); console.log(sum1);
当用new关键字调用sum函数时,JavaScript会自动完成以下几个操作:
- 先创建一个空的新对象,这个对象的原型会关联到
sum.prototype; - 把这个新对象绑定为
sum函数内部的this; - 执行
sum函数里的代码——也就是console.log(this),这时打印的就是刚创建的那个新对象,也就是sum{}; - 因为
sum函数没有显式返回其他对象类型的值,所以new sum()会自动把这个新创建的对象返回,赋值给sum1。
说白了,两次打印的是同一个对象:第一次是在构造函数内部通过this访问并打印,第二次是直接打印接收了这个对象的变量sum1,所以结果自然都是sum{}。
内容的提问来源于stack exchange,提问作者RAJYAVARDHAN SINGH RATHORE
相关产品推荐
相关产品推荐

