2

IE7でこの動作を引き起こす原因は何ですか?この問題をjsfiddleで再現することはできません...

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

オブジェクトを返します。

私は完全に混乱しています。

この問題をデバッグする方法は?新しい関数がオブジェクトを返す理由を理解するにはどうすればよいですか?

アップデート

そうじゃないの?それとも私は何かを理解していませんか?私には、Windows8のバグのように見えます。

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

アップデート

これはIE8までですが、IE9ではなくなりました。

4

3 に答える 3

1

私はこれを私のマシンで複製することはできません、そしてあなたの権利-それは間違っています。EMCAの仕様に従って、オペレーターにcallable返さfunctionれる必要のあるものはすべて。この問題に直面して、特定の変数が関数であるかどうかをテストする場合は、次を使用できます。typeof

function isFunction(func){
    return  typeof func === 'function' ||
           (typeof func === 'object' && func instanceof Function); 
}
于 2012-05-22T09:55:10.890 に答える
0

この解決策によって解決された問題:

var func=eval('(function(){return function(){ your code here }})()');
于 2012-05-30T15:49:39.763 に答える
0

マークローズの答えを拡張するには

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
于 2012-05-22T10:11:16.873 に答える