IE7新函数返回对象而不是函数

时间:2012-05-22 09:43:45

标签: javascript

在IE7中可能导致此行为的原因是什么?我无法在jsfiddle上重现这个问题...

var func=new Function('arg','return 2*2;');
alert(typeof func);

返回对象。

我完全糊涂了。

如何调试此问题?如何弄清楚新函数返回对象的原因?

更新

应该不是这样吗?或者我只是不明白?对我来说,它看起来像Windows 8的bug。

https://www.dropbox.com/s/mhyuab3mhj2yu59/ie7_windows8_bug.png

更新

这取决于IE8,在IE9中它已经消失了。

3 个答案:

答案 0 :(得分:1)

我不能在我的机器上复制这个,而你的权利 - 这是错误的。 callable的任何内容都应根据EMCA specsfunction运算符返回typeof。如果要测试给定变量是否是面对此问题的函数,可以使用:

function isFunction(func){
    return  typeof func === 'function' ||
           (typeof func === 'object' && func instanceof Function); 
}

答案 1 :(得分:0)

延长Mark Rhodes回答

function realType( t ) {
    return Object.prototype.toString.call(t).slice(8, -1);
};

var func=new Function('arg','return 2*2;');

alert( realType(func) ); // Function/Object
alert( realType([]) ); // Array
alert( typeof [] ) // object

alert( realType(new Date) ); // Date
alert( typeof (new Date) ); // object

答案 2 :(得分:0)

通过此解决方案解决问题:

var func=eval('(function(){return function(){ your code here }})()');
相关问题