<meta name="keywords" content="华夏棋牌,jquery,工具应用,isFunction,isArray,isWindow" />
华夏棋牌 > web前端 > js教程 > 注释

jquery中的工具应用措施$.isFunction, $.isArray(), $.isWindow()_jquery

原创 2016-05-16 15:46:06 0 65
赞助会员专享特权
华夏棋牌 在中,我们解说了了jquery中$.type()完成的原理。虽然,jquery除供应$.type的工具措施外,还供应了几个其他的工具措施:$.isFunction(), $.isArray(), $.isWindow(), $.isNumeric()等。这几个措施从措施名上便可以看出其用处来,下面我们来逐一解说这几个措施在jQuery(2.1.2)中完成的外部细节。

1. $.isFunction()

$.isFunction()是用来断定变量能否为function类型,我们经由历程几个例子来看看:

$.isFunction(123); // false
$.isFunction(true);// false
$.isFunction([1, 2]);// false
$.isFunction(function(){});// true

function func(){

}
var sfunc = function(){

}
$.isFunction(func); // true
$.isFunction(sfunc);// true

从下面的例子中能够看到,在$.isFunction(param)中,若传入的param是function类型,则前往true;其他的类型则前往false。
检查jquery的源码我们可以看到,$.isFunction()也是经由历程$.type()完成的:

isFunction: function( obj ) {
	return jQuery.type(obj) === "function";
}

2. $.isArray()

$.isArray()是用来断定变量能否为array类型。异常,我们也经由历程几个例子来看看$.isArray的用法:

$.isArray(123);  // false
$.isArray(true); // false
$.isArray([1, 2]);// true
$.isArray(new Array(3, 4)); // true

岂论是array的字面量照样应用new要害词培植的变量,都能应用$.isArray()断定其是array类型。在jquery源码中,$.isArray挪用的就是原生Array供应的isArray措施。由于在高版本的浏览器中,曾经给原生JavaScript供应了一个isArray措施用来断定变量能否为array类型。
isArray: Array.isArray
3. $.isWindow()

$.isWindow()是用来断定以后变量能否为window,如:

$.isWindow(window); // true
$.isWindow([]); 	// false
$.isWindow(null); 	// false

华夏棋牌在jQuery源码中:

isWindow: function( obj ) {
	return obj != null && obj === obj.window;
}

华夏棋牌他是经由历程断定obj能否有window属性,来断定obj能否为window工具。由于window工具里有一个属性window,就是他自己,是以:window.window===window,异常的:

window.window.window.window === window;

可以一直循环下去。

华夏棋牌而代码里为甚么要先断定一下obj能否为null呢?由于在断定null或undefined能否有window属性时,代码会抛出异常:Uncaught TypeError: Cannot read property ‘window' of null。是以,为了防止代码弱点,首先断定变量能否为null,若为null,则它一定不是window工具,直接前往false;否则再断定这个变量有没有window属性。

4. $.isNumeric()

$.isNumeric()是用来断定以后变量能否为数字类型,可是为甚么我不应用$.type()=="number"来断定呢。我们先来看几个官方的例子:

$.isNumeric("-10"); // true
$.isNumeric(16);   // true
$.isNumeric(0xFF);  // true
$.isNumeric("0xFF"); // true
$.isNumeric("8e5"); // true (exponential notation string)
$.isNumeric(3.1415); // true
$.isNumeric(+10);  // true
$.isNumeric(0144);  // true (octal integer literal)
$.isNumeric("");   // false
$.isNumeric({});   // false (empty object)
$.isNumeric(NaN);  // false
$.isNumeric(null);  // false
$.isNumeric(true);  // false
$.isNumeric(Infinity); // false
$.isNumeric(undefined); // false

应用$.isNumeric()能够断定出“-10”, “0xFF”这样字符串类型的数字,而$.type()则会将其剖析为string类型。
华夏棋牌 在jquery源码中,是这样断定变量类型的:

isNumeric: function( obj ) {
	// parseFloat NaNs numeric-cast false positives (null|true|false|"")
	// ...but misinterprets leading-number strings, particularly hex literals ("0x...")
	// subtraction forces infinities to NaN
	// adding 1 corrects loss of precision from parseFloat (#15100)
	return !jQuery.isArray( obj ) && (obj - parseFloat( obj ) + 1) >= 0;
}

首先断定其变量能否为array类型,若是则直接前往false。可是为甚么要先断定变量能否为array类型呢?由于[123]这样类型的数组是可以直接阻拦减法运算的,同时也能经由历程parseFloat([“123”])转换为数字:

[100] - 60 		// 40
[100] - [60] 		// 40
parseFloat([123]) 	// 123
parseFloat(["345"]) // 345

是以不克不及直接经由历程parseFloat()转换,然后断定。首先得断定这个变量能否为数组;若不是才阻拦下一步的断定:

(obj - parseFloat( obj ) + 1) >= 0

纯数字,字符串类型的数字,0开首的数字(8进制),0x开首的数组(16进制)等,都能经由历程parseFloat()正常阻拦转换为10进制的数字。经由下面表达式的运算,一定是年夜于0的。可是为甚么要加上1呢?代码里也说清晰了了,经由历程parseFloat()转换到,会组成精度损掉落的效果,是以+1后,运算效果加倍的准确。

而其他类型的经由历程parseFloat()转换后取得的是NaN,NaN岂论经由历程怎样的运算,都是不克不及跟0较量的,前往false。

在jquery之前的版本(如2.0.2)中:

isNumeric: function( obj ) {
	return !isNaN( parseFloat(obj) ) && isFinite( obj );
}

我们可以发现,应用这样的代码$.isNumeric([123])运转后,取得的true,而现实上,它是个数组类型。不外还好,在后续的版本曾经修复了。

5. $.isEmptyObject()

$.isEmptyObject()不是用来断定变量的类型了,而是断定一个object类型能否为空,不网罗任何属性。
华夏棋牌 从 jQuery 1.4 泉源,这个措施既检测工具自己的属性,也检测从原型一连的属性(是以没有应用hasOwnProperty)。参数应当是一个浅易的JavaScript工具, 关于其他类型的工具(DOM元素,原始strings/numbers,host工具)在跨浏览器中能够没法供应不合的效果。

$.isEmptyObject({name:"wenzi"}) // false
$.isEmptyObject({}) // true

function Person(){
	this.name = "wenzi"
}
$.isEmptyObject(new Person()); // false

function Student(){

}
Student.prototype.name = "wenzi";
$.isEmptyObject(new Student()); // false

我们能够看到,岂论是工具自己的属性,还是prototype上的属性,只需存在,都邑前往false。

isEmptyObject: function( obj ) {
	var name;
	for ( name in obj ) {
		return false;
	}
	return true;
}

在jquery中,是经由历程for~in阻拦检测的。由于for~in也是能循环到prototype上的属性的,若进入到循环中,则诠释obj存在属性,施展false;否则前往true。
6. 总结

jquery中还供应了许多种种各样的工具措施,让我们在编写js代码时加倍的便利。以后无时机时再总结其他的工具措施。

php中文网最新课程二维码
  • 相关标签:jquery 工具应用 isFunction isArray isWindow
  • 本文原创宣布php中文网 ,转载请注明出处,谢谢您的尊重!
  • 相关文章


  • 原生javascript完因素享到同伙圈功效 支持ios和android_javascript手艺
  • jQuery链式挪用与show知识浅析_jquery
  • JS完成登录页面记着密码和enter键登录措施推荐_javascript手艺
  • BootstrapTable与KnockoutJS相联络完成增删改查功效【一】_javascript手艺
  • jquery中的工具应用措施$.isFunction, $.isArray(), $.isWindow()_jquery
  • 网友议论

    文明上彀理性语言,请遵守 新闻议论服务协定

    我要议论

    独孤九贱(5)_ThinkPHP5视频教程

    华夏棋牌ThinkPHP是国际最盛行的中文PHP开发框架,也是您Web项目的最好选择。《php.cn独孤九贱(5)-ThinkPHP5视频教程》课程以ThinkPHP5最新版本为例,从最基本的框架知识泉源,将...

    • 2017-05-16 12:03:57
    • 点击数(173878)

    独孤九贱(4)_PHP视频教程

    江湖传言:PHP是天下上最好的编程语言。真的是这样吗?这个梗现实是从哪来的?学会本课程,你就会明确了。 华夏棋牌-万豪棋牌电玩城-微信娱乐棋牌出品的PHP入门系统教授修养视频,完全从初学者的角度出发,绝不玩虚的,一切以适用、有用...

    • 2017-03-20 22:47:17
    • 点击数(170045)

    独孤九贱(1)_HTML5视频教程

    《php.cn原创html5视频教程》课程特点:php中文网原创滑稽段子系列课程,以恶弄,段子为主题气焰气焰的php视频教程!轻松的教授修养气焰气焰,杂乱的教授修养形式,让同砚们在不知不觉中,学会了HTML知识。 ...

    • 2017-03-13 10:15:11
    • 点击数(137363)

    ThinkPHP5实战之[教授修养治理系统]

    华夏棋牌本套教程,以一个真实的黉舍教授修养治理系统为案例,手把手教会您怎样在一张白纸上,从零泉源,一步一步的用ThinkPHP5框架快速开发出一个商业项目。

    • 2017-07-24 16:48:56
    • 点击数(130712)

    PHP入门视频教程之一周学会PHP

    华夏棋牌一切盘算机语言的学习都要从根原泉源,《PHP入门视频教程之一周学会PHP》不只是PHP的基础部门更主要的是PHP语言的焦点手艺,是学习PHP必须控制的内容,任何PHP项目的完成都离不开这部门的内容,通...

    • 2016-11-16 14:54:14
    • 点击数(130038)

    作者信息

    php中文网

    认证0级讲师

    比来文章

    相关视频教程

  • javascript低级视频教程
  • jquery 基础视频教程
  • javascript三级联动视频教程
  • 独孤九贱(3)_JavaScript视频教程
  • 独孤九贱(6)_jQuery视频教程
  • 相关视频章节