请教一道js基础题

function test(){

return test;

}

new test() instanceof test; 这段代码的执行结过为什么是false呀

#JavaScript#
全部评论
另外,1楼的解释并不正确。new test() instanceof Function 返回true才对。因为test本身是个函数,任何函数的__proto__都指向Function.prototype。此外,new test() instanceof Object也会返回true。因为函数也是对象,而所有对象的原型链上都会有Object.prototype。(除了你用Object.create(null)等hack方法创造出的特殊对象)
点赞 回复 分享
发布于 2019-08-04 22:59
首先明确new的机制 构造函数如果没有return,就是你理解的那种new,创建一个对象,并把proto指向这个构造函数的prototype 构造函数如果return了,那么new的结果直接为这个return值。构造函数不会为这个return值设置原型链相关的东西 其次,明确instanceof的判断机制:对于a instanceof b 沿着a的原型链往上查找,如果查到了b.prototype则返回true,否则返回false 那么回到题目。test构造函数return了一个值,所以其走的是new机制的第二条,并不会为其设置原型链。也就是说,new test()的返回值的原型链,并不会指向test.prototype。根据instanceof的机制,返回结果为false
点赞 回复 分享
发布于 2019-08-04 22:50
应该为new test() instanceof test.class;才能返回true,判断instanceof左边是否为右边的实例,返回boolean
点赞 回复 分享
发布于 2019-08-04 22:50

相关推荐

喜欢飞来飞去的雪碧在刷代码:可以试一试字节
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务