如果是JavaScript中的函数,则为instanceof

前端之家收集整理的这篇文章主要介绍了如果是JavaScript中的函数,则为instanceof前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
第一个问题是我在采访中被问到的,说实话,我看到自己真的很困惑并且展示了门,

考虑一下片段:

案例a:

var sayHello = new Function("alert('Hello there');");
    alert(sayHello instanceof Function);            // true 
    alert(sayHello instanceof Object);              // true,since every 
                                                    // object inherits from Object

案例b:

var myFunction = function(){

    }

    var ins = new myFunction();              
    alert(ins instanceof myFunction);        // ofcourse,true
    alert(myFunction instanceof Function);   // true

    alert(ins instanceof Function);          // false,Why is this not true?

根据我的理解,函数必须在ins的原型链中?

ins <-- myFunction <-- Function <-- Object

解决方法

你似乎在Javascript中误解了新的.

new myFunction()

不会创建该函数的新实例.而是创建一个新对象,它继承自myFunction.prototype并调用myFunction,将对象作为此函数传递给函数.

因此,您还没有真正创建该函数的新实例,您的ins不是函数.您可以通过尝试假装它来轻松验证它:

var myFunction = function(){

}

var ins = new myFunction(); 

ins(); <-- error,ins is not a function

既然它不是一个函数,为什么你会期望函数在它的原型链中呢?

猜你在找的JavaScript相关文章