Cara menggunakan alatan dalam jquery $.isFunction, $.isArray(), $.isWindow()_jquery

WBOY
Lepaskan: 2016-05-16 15:46:06
asal
966 orang telah melayarinya

Dalam Penghakiman jenis pembolehubah dalam JavaScript, kami menerangkan prinsip pelaksanaan $.type() dalam jquery. Sudah tentu, selain menyediakan kaedah alat $.type, jquery juga menyediakan beberapa kaedah alat lain: $.isFunction(), $.isArray(), $.isWindow(), $.isNumeric(), dsb. Tujuan kaedah ini boleh dilihat daripada nama kaedah Mari kita jelaskan butiran dalaman kaedah ini dilaksanakan dalam jQuery (2.1.2) satu persatu.

1. $.isFunction()

$.isFunction() digunakan untuk menentukan sama ada pembolehubah adalah daripada jenis fungsi. Mari kita lihat beberapa contoh:

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

function func(){

}
var sfunc = function(){

}
$.isFunction(func); // true
$.isFunction(sfunc);// true
Salin selepas log masuk

Seperti yang anda lihat daripada contoh di atas, dalam $.isFunction(param), jika param masuk ialah jenis fungsi, ia akan kembali benar untuk jenis lain, ia akan kembali palsu.
Melihat pada kod sumber jquery, kita dapat melihat bahawa $.isFunction() juga dilaksanakan melalui $.type():

isFunction: function( obj ) {
	return jQuery.type(obj) === "function";
}
Salin selepas log masuk

2. $.isArray()

$.isArray() digunakan untuk menentukan sama ada pembolehubah adalah daripada jenis tatasusunan. Begitu juga, kami juga melihat penggunaan $.isArray melalui beberapa contoh:

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

Sama ada tatasusunan literal atau pembolehubah yang dibuat menggunakan kata kunci baharu, anda boleh menggunakan $.isArray() untuk menentukan sama ada ia adalah jenis tatasusunan. Dalam kod sumber jquery, $.isArray memanggil kaedah isArray yang disediakan oleh Array asli. Kerana dalam versi penyemak imbas yang lebih tinggi, JavaScript asli telah disediakan dengan kaedah isArray untuk menentukan sama ada pembolehubah adalah daripada jenis tatasusunan.
isArray: Array.isArray
3. $.isWindow()

$.isWindow() digunakan untuk menentukan sama ada pembolehubah semasa ialah tetingkap, seperti:

$.isWindow(window); // true
$.isWindow([]); 	// false
$.isWindow(null); 	// false
Salin selepas log masuk

Dalam kod sumber jQuery:

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

Dia menentukan sama ada obj ialah objek tetingkap dengan menentukan sama ada obj mempunyai atribut tetingkap. Kerana terdapat tetingkap atribut dalam objek tetingkap, yang merupakan dirinya sendiri, oleh itu: window.window===window, sama:

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

Anda boleh terus menggelung.

Mengapa kita perlu terlebih dahulu menentukan sama ada obj adalah null dalam kod? Kerana apabila menilai sama ada null atau undefined mempunyai sifat tetingkap, kod tersebut akan membuang pengecualian: Uncaught TypeError: Tidak dapat membaca 'tetingkap' sifat null. Oleh itu, untuk mengelakkan ralat kod, mula-mula tentukan sama ada pembolehubah itu adalah batal, ia pastinya bukan objek tetingkap dan mengembalikan palsu secara langsung, ia kemudiannya ditentukan sama ada pembolehubah itu mempunyai atribut tetingkap.

4. $.isNumeric()

$.isNumeric() digunakan untuk menentukan sama ada pembolehubah semasa adalah daripada jenis angka, tetapi mengapa saya tidak menggunakan $.type()=="number" untuk menentukan. Mari lihat beberapa contoh rasmi dahulu:

$.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
Salin selepas log masuk

Menggunakan $.isNumeric() boleh menentukan nombor jenis rentetan seperti "-10" dan "0xFF", manakala $.type() akan menghuraikannya kepada jenis rentetan.
Dalam kod sumber jquery, jenis pembolehubah ditentukan seperti ini:

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;
}
Salin selepas log masuk

Mula-mula tentukan sama ada pembolehubah adalah daripada jenis tatasusunan, dan jika ya, kembalikan palsu secara langsung. Tetapi mengapa kita perlu terlebih dahulu menentukan sama ada pembolehubah adalah jenis tatasusunan? Kerana tatasusunan jenis [123] boleh ditolak terus, dan juga boleh ditukar kepada nombor melalui parseFloat(["123"]):

[100] - 60 		// 40
[100] - [60] 		// 40
parseFloat([123]) 	// 123
parseFloat(["345"]) // 345
Salin selepas log masuk

Oleh itu, ia tidak boleh ditukar terus melalui parseFloat() dan kemudian dinilai. Mula-mula, anda mesti menentukan sama ada pembolehubah ialah tatasusunan, jika tidak, teruskan ke langkah seterusnya:

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

Nombor tulen, nombor jenis rentetan, nombor bermula dengan 0 (octal), tatasusunan bermula dengan 0x (heksadesimal), dll. boleh ditukar kepada nombor perpuluhan melalui parseFloat(). Selepas operasi ungkapan di atas, ia mestilah lebih besar daripada 0. Tetapi mengapa tambah 1? Ia juga dijelaskan dalam kod bahawa menukar melalui parseFloat() akan menyebabkan masalah kehilangan ketepatan, jadi selepas 1, hasil operasi akan lebih tepat.

Untuk jenis lain, NaN diperoleh selepas penukaran melalui parseFloat() Tidak kira apa operasi yang dilakukan, NaN tidak boleh dibandingkan dengan 0 dan mengembalikan palsu.

Dalam versi jquery sebelumnya (seperti 2.0.2):

isNumeric: function( obj ) {
	return !isNaN( parseFloat(obj) ) && isFinite( obj );
}
Salin selepas log masuk

Kami dapati bahawa selepas menjalankan kod $.isNumeric([123]), kami mendapat kebenaran, tetapi sebenarnya, ia adalah jenis tatasusunan. Nasib baik, ia telah diperbaiki dalam versi berikutnya.

5. $.isEmptyObject()

$.isEmptyObject() tidak digunakan untuk menentukan jenis pembolehubah, tetapi untuk menentukan sama ada jenis objek kosong dan tidak mengandungi sebarang atribut.
Bermula dengan jQuery 1.4, kaedah ini mengesan kedua-dua sifat pada objek itu sendiri dan sifat yang diwarisi daripada prototaip (jadi hasOwnProperty tidak digunakan). Parameter hendaklah objek JavaScript biasa, jenis objek lain (elemen DOM, rentetan/nombor mentah, objek hos) mungkin tidak memberikan hasil yang konsisten merentas penyemak imbas.

$.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
Salin selepas log masuk

我们能够看到,不论是对象本身的属性,还是prototype上的属性,只要存在,都会返回false。

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

在jquery中,是通过for~in进行检测的。因为for~in也是能循环到prototype上的属性的,若进入到循环中,则说明obj存在属性,发挥false;否则返回true。
6. 总结

jquery中还提供了很多各种各样的工具方法,让我们在编写js代码时更加的方便。以后有机会时再总结其他的工具方法。

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan