isFunction
标准写法是:
var isFunction = function(obj) {
return Object.prototype.toString.call(obj) === '[object Function]'
}
深层次:
[list]
有博客说, 之前的chrome会识别 new Regexp()为function, 没有测试之前的chrome, 现在的不会了
有博客说, document.write在IE下会识别为object, 其实新的写法, 依然还是object, 不信,jquery测试下, 同理getAttribute也是一样的
jquery的isFunction注释
// See test/unit/core.js for details concerning isFunction.
// Since version 1.3, DOM methods and functions like alert
// aren't supported. They return false on IE (#2968).
isFunction: function( obj ) {
return jQuery.type(obj) === "function";
}
jquery中的 type(obj), 即是 Object.prototype.toString.call(obj)
jquery已经不支持DOM方法,以及像alert这样的方法, 因为他们在IE都返回false,无法区分
#2968 见 http://bugs.jquery.com/ticket/2968
[/list]
最简单的写法:
var isFunction = function(obj) {
return typeof obj === 'function'
}
这个写法, 在jquery的isFunction测试用例中, 全部通过 https://code.google.com/p/jqueryjs/source/browse/trunk/jquery/test/unit/core.js
简单的就是最好的~~
测试用例 (修改自jquery的isFunction测试用例)
<body>
<ul id="result"></ul>
<script>
var jQuery = {
isFunction: function(obj) {
return typeof obj === 'function'
}
}
function ok(bool, text) {
document.getElementById('result').innerHTML += ('<li>' + (bool ? '√':'×') + ' ' + text);
}
function test() {
// Make sure that false values return false
ok( !jQuery.isFunction(), "No Value" );
ok( !jQuery.isFunction( null ), "null Value" );
ok( !jQuery.isFunction( undefined ), "undefined Value" );
ok( !jQuery.isFunction( "" ), "Empty String Value" );
ok( !jQuery.isFunction( 0 ), "0 Value" );
// Check built-ins
// Safari uses "(Internal Function)"
ok( jQuery.isFunction(String), "String Function("+String+")" );
ok( jQuery.isFunction(Array), "Array Function("+Array+")" );
ok( jQuery.isFunction(Object), "Object Function("+Object+")" );
ok( jQuery.isFunction(Function), "Function Function("+Function+")" );
// When stringified, this could be misinterpreted
var mystr = "function";
ok( !jQuery.isFunction(mystr), "Function String" );
// When stringified, this could be misinterpreted
var myarr = [ "function" ];
ok( !jQuery.isFunction(myarr), "Function Array" );
// When stringified, this could be misinterpreted
var myfunction = { "function": "test" };
ok( !jQuery.isFunction(myfunction), "Function Object" );
// Make sure normal functions still work
var fn = function(){};
ok( jQuery.isFunction(fn), "Normal Function" );
var obj = document.createElement("object");
// Firefox says this is a function
ok( !jQuery.isFunction(obj), "Object Element" );
// IE says this is an object
// Since 1.3, this isn't supported (#2968)
//ok( jQuery.isFunction(obj.getAttribute), "getAttribute Function" );
var nodes = document.body.childNodes;
// Safari says this is a function
ok( !jQuery.isFunction(nodes), "childNodes Property" );
var first = document.body.firstChild;
// Normal elements are reported ok everywhere
ok( !jQuery.isFunction(first), "A normal DOM Element" );
var input = document.createElement("input");
input.type = "text";
document.body.appendChild( input );
// IE says this is an object
// Since 1.3, this isn't supported (#2968)
//ok( jQuery.isFunction(input.focus), "A default function property" );
document.body.removeChild( input );
var a = document.createElement("a");
a.href = "some-function";
document.body.appendChild( a );
// This serializes with the word 'function' in it
ok( !jQuery.isFunction(a), "Anchor Element" );
document.body.removeChild( a );
// Recursive function calls have lengths and array-like properties
function callme(callback){
function fn(response){
callback(response);
}
ok( jQuery.isFunction(fn), "Recursive Function Call" );
fn({ some: "data" });
};
callme(function(){
callme(function(){});
});
}
test();
</script>
</body>
分享到:
相关推荐
其中一个工具函数是`isFunction`,它被设计用来检测给定的参数是否为函数类型。然而,在早期版本中,`isFunction`函数在Internet Explorer (IE) 浏览器中存在BUG,导致它无法正确地识别一些原生DOM方法和函数如`...
当然,jquery除了提供$.type的工具方法外,还提供了几个其他的工具方法:$.isFunction(), $.isArray(), $.isWindow(), $.isNumeric()等。这几个方法从方法名上就能看出其用途来,下面我们来一一讲解这几个方法在...
如果 FUN 是有效的 matlab 函数,则 TF = ISFUNCTION(FUN) 返回 1,否则返回 0。 Matlab 函数可以是字符串或函数句柄。 [TF, ID] = ISFUNCTION(FUN) 也返回一个标识符 ID。 ID 可以采用以下值: 1 : FUN 是一个函数...
this is function main.c(6)-main: this is main this is function main.c(8)-main: this is main ``` 从输出结果可以看到,每行输出都包含了文件名、行号和函数名,从而方便地定位代码的执行过程。 为了更方便地...
2. `isFunction(obj)`:这个方法用来确定给定的值是否为函数。在JavaScript中,函数也是一种对象,因此有时需要明确区分普通对象和函数对象。 3. `isBriskyBaseObject(obj)`:此方法专门针对brisky框架,用于检查...
这些API包括但不限于`isArguments`、`isArray`、`isFunction`、`isObject`、`isString`等,它们通过对变量进行特定的逻辑判断来确定其类型。例如,`isFunction`通过检查`typeof`操作符的结果是否为"function"来判断...
echo "This is function myfunc." } ``` 2. **使用`function`关键字的函数定义**: 在这种定义方式中,`function`关键字后面紧跟函数名,再接花括号。这在某些Shell版本中是必要的,但并非所有Shell都支持。...
function and pin compatible with the MAX9271. In high bandwidth mode, the parallel-clock maximum is 116MHz for 12-bit linear or combined HDR data types. The embedded control channel operates at 9.6...
1. 函数头部:`Function 函數名稱(輸入參數宣告) RETURN 資料型態 is` 2. 变量声明:`變數宣告` 3. 函数体:`Begin` 和 `End 函數名稱;` 例如: ```vhdl Function fun_1(signal a, b : Integer;) RETURN ...
11. `isFunction` 函数检查一个值是否为函数。 ```javascript function isFunction(value) { return typeof value === 'function'; } ``` 以上只列举了部分函数,完整的文档中应该还包括更多的实用工具函数,例如...
这些函数包括但不限于`isString()`, `isNumber()`, `isObject()`, `isArray()`, `isFunction()`等,它们能帮助开发者在运行时检查变量的类型,从而避免因类型错误导致的问题。 二、核心功能 1. **类型判断**:if...
FUNCTION invert(s : three_level_logic) RETURN three_level_logic IS VARIABLE temp : three_level_logic; BEGIN CASE s IS WHEN '0' => temp := '1'; WHEN '1' => temp := '0'; WHEN 'Z' => temp := 'Z'; ...
} else if ( jQuery.isFunction( selector ) ) return jQuery( document ).ready( selector ); // Make sure that old selector state is passed along if ( selector.selector && selector.context ) { this....
if (jsFunction && jsFunction->IsFunction()) { std::vector*> arguments; // 添加参数... result = jsFunction->Call(NULL, arguments); } context->Exit(); } ``` 而在JavaScript端,调用C++函数可以这样...
打开控制台发现报错:object is not a function。 感觉很奇怪,这块的功能最新没动过怎么会突然出问题了呢?上线时主流浏览器都测试过了呀。 虽然奇怪,但是还的解决问题。看着代码发现一个radio对象的name属性和一...
The every part of function on AES, writen in java and in class.Two java txt in the rar, one is function and another is operator txt.
log ( 'this is function body.' ) ; return true ;} ;var ret = regex . exec ( fn . toString ( ) ) ;console . log ( ret [ 1 ] ) ; // => '\nconsole.log(\'this is function body.\');\nreturn true;\...
当你遇到“jQuery.handleError is not a function”的错误时,这意味着在使用ajaxFileUpload过程中,程序尝试调用jQuery的一个错误处理方法,但这个方法在当前版本的jQuery中并未定义。这个问题通常出现在从较旧的...