在Javascript中的变量的
类型的判断,解释了我们的原则。型()实现在jQuery,jQuery不仅提供了
工具和美元工具。型,但也提供了一些其他工具和
方法:美元。
功能(),(),美元。ISArray美元。iswindow(),美元。ISNUMERIC()等。使用方法名的方法可以从哪里来,我们将解释以下几种方法在jQuery(2.1.2)在内部实现的细节。
1。美元的功能()。
美元。功能()是用来确定变量的
函数类型,我们可以通过几个例子。
美元。功能(123); / /假
美元。功能(true); / /假
美元。功能({ 1, 2 }); / /假
美元。功能(函数(){ }); / /真的
函数(){
}
var SFUNC =函数(){()
}
美元。功能(功能); / /真的
美元。功能(SFUNC); / /真的
正如你可以看到在美元上面的例子。功能(
参数),如果传入的参数是函数的类型,则返回true;其他类型返回false。
看看jQuery的源代码,我们可以看到美元。功能是通过()实现的类型()美元。
功能:功能(obj){
返回jquery.type(obj)=功能;
}
2。美元。ISArray()
美元。ISArray()用来判断一个变量是一个类型的数组,以同样的方式,我们还采取了一些例子来看看ISArray使用美元。
(123)美元。ISArray; / /假
美元。ISArray(true); / /假
美元。ISArray({ 1, 2 }); / /真的
美元。ISArray(新阵列(3, 4)); / /真的
无论是字面数组或变量使用一个新的关键字
创建的,你可以使用美元。ISArray()来确定的,它是一个数组类型。在jQuery源码,美元。ISArray调用
本地阵列提供的ISArray方法。因为在高版本的
浏览器,Javascript已有一个判断一个变量是一个数组类型的ISArray方法。
array.isarray ISArray:
三.iswindow()美元。
美元。iswindow()用来判断当前变量窗口,如:
美元。iswindow(窗口); / /真的
美元。iswindow({ }); / /假
美元。iswindow(空); / /假
在jQuery源代码中:
IsWindow:功能(obj){
返回obj = null对象= obj.window;
}
他决定
目标是通过判断对象有一个窗口,
属性窗口对象。因为在窗口对象有一个属性窗口,那是他自己,所以窗口。窗口= = =窗口,同:
window.window.window.window =窗口;
它可以一直在流通。
为什么代码首先判断obj是空的吗因为当判断是否为空或未定义有一个窗口的属性,代码将抛出一个例外:Uncaught TypeError:不能读空属性窗口。因此,为了防止代码中的
错误,我们首先判断变量是空的。如果NULL是,那么它肯定不是窗口对象,并直接返回false;否则,我们将进一步确定变量是否具有窗口属性。
4。ISNUMERIC()美元。
(美元。ISNUMERIC)是用来确定当前的数字型变量,但我为什么不使用美元。型()= =数的判断。让我们先看一些官方的例子。
美元。ISNUMERIC(10); / /真的
美元。ISNUMERIC(16); / /真的
美元。ISNUMERIC(0xFF); / /真的
美元。ISNUMERIC(0xFF); / /真的
美元。ISNUMERIC(8e5 / /真实);(指数符号串)
美元。ISNUMERIC(3.1415); / /真的
美元。ISNUMERIC(+ 10); / /真的
美元。ISNUMERIC(0144); / /真实(八进制整数)
(美元。ISNUMERIC ); / /假
美元。ISNUMERIC({ }); / /假(空的对象)
美元。ISNUMERIC(南); / /假
美元。ISNUMERIC(null); / /假
美元。ISNUMERIC(true); / /假
美元。ISNUMERIC(无穷大); / /假
美元。ISNUMERIC(定义); / /假
使用$()。ISNUMERIC确定字符串类型如10,0xFF,至数。式()将它解释成一个字符串类型。
在jQuery源代码中,这是变量的判断类型:
ISNUMERIC:功能(obj){
NaN数字铸误报 / / parseFloat(零|真|假| )
但领先数 / /曲解…字符串,特别是六字面值(0x…)
力量无穷大到南 / /减法
1校正 / /添加精度从parseFloat(#损失15100)
返回!JQuery.isArray(obj(obj)- parseFloat(obj)+ 1)> = 0;
}
首先,确定它的变量是否是数组类型,如果它直接返回false,但是为什么要先确定变量是否是数组类型因为数组{ 123 }型可直接扣除,也可由parseFloat转化成一个数字({ 123 })。
{ 100 } - 60 40
{ 100 } { 60 } 40
ParseFloat({ 123 }) / 123
ParseFloat({ 345 }) / 345
所以它不能直接
转换通过parseFloat()然后判断。首先,我们判断变量是否为数组;如果没有下一步。
(obj - parseFloat(obj)+ 1)> = 0
The number of pure numbers, the string type, the number 0 (8 digits), and the array (16 hexadecimal) at the beginning of 0x can be converted to 10 digits by parseFloat ().Through the operation of the above expression, it must be greater than 0.But why do you add 1代码也说明转换为parseFloat()可以导致损失的精度问题,使结果更为准确后+ 1。
和其他类型的parseFloat()转换为南,南,无论怎样
操作,无法相比的0,返回假。
在jQuery的以前的版本(如2.0.2):
ISNUMERIC:功能(obj){
返回!IsNaN(parseFloat(obj))需(obj);
}
我们可以
发现,这样的代码
运行后美元。ISNUMERIC({ 123 }),得到真实的,而事实上,它是一个数组类型,但它的好,后来的版本已经固定。
5。isemptyobject()美元。
美元。isemptyobject()不是用来判断一个变量的类型,但判断一个对象类型是空的,不包含属性。
从jQuery 1.4,该方法
检测对象本身的性质,并检测从原型继承的属性(所以没有使用hasownproperty)。参数应该是一个普通的Javascript对象,可以不提供其他类型的对象一致的结果(DOM元素,原始字符串或数字宿主对象),跨浏览器。
美元。isemptyobject({姓名:文子}) / /假
美元。isemptyobject({ }) / /真的
功能人(){
this.name =文字
}
美元。isemptyobject(新)(人); / /假
函数学生(){
}
student.prototype.name =文字;
美元。isemptyobject(新)(学生); / /假
我们可以看到对象本身的属性,或者原型上的属性,只要它存在就返回false。
isemptyobject:功能(obj){
变量名;
(名为obj){
返回false;
}
返回true;
}
在jQuery,它是检测为~在~ in.because也能够运行在样机的
性能,如果你进入循环,这表明目标属性玩假;否则,返回true。
6。总结
jQuery中也有各种各样的工具,使我们更方便地编写JS代码。