js中this的问题?

function C(){
    this.a = 1;
    return false;
}
console.log(typeof new C())

返回结果是object

想知道C是函数还是构造函数?return false应该怎么理解?

阅读 2.8k
6 个回答
function C(){
    this.a = 1;
    return false;
}

console.log(typeof new C())    // object
console.log(new C())    // {a: 1}
console.log(C())    // false

楼主体会下这3个的不同

构造函数也是函数啊。
return false就是运行到这一行时候就将返回false并结束,对于构造函数来说也是相当于是结束,只不过最后生成的对象与这个false并没有什么关系。

如果是构造函数并且用new调用,return 返回false是不会有用的,仍然返回这个构造函数生成的对象实例

恩,构造函数也是函数,
我的个人理解是这样的:
function c() { return false}
如果看成一个普通的面向过程编程的函数的话,执行到 return就代表函数执行结束,返回后面的数值 false,
如果是 在new C, 看成面向对象编程的构造函数的话,return false 其实没什么实际意义。

但是看到标题是 "js 中的this问题",如果想理解this的话,可以看下阮老师的这个文章this关键字传送

构造函数

如果 return 的是一个对象,则构造函数执行结果返回这个对象。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题