JS對象(3)- 其他內(nèi)容

1. call和apply

? ? call和apply是方法的一種調(diào)用方式,定義為:Function.call(obj,arg1,arg2...),F(xiàn)unction.call(obj,[arg1,arg2...]);作用是改變調(diào)用的函數(shù)內(nèi)部的this指向,使函數(shù)內(nèi)部的this指向obj,通常我們直接調(diào)用一個函數(shù)時,其內(nèi)部也是調(diào)用的call。示例如下:

2. 對象的枚舉

? ? js中,提供了for...in循環(huán)來枚舉對象的屬性,下面的代碼枚舉了對象obj的屬性,以及打印屬性的值:

? ? 上面的代碼中,對象obj的原型屬性也被枚舉了出來,所以for...in循環(huán)枚舉的屬性不僅包括自身屬性,還包括原型上的屬性,但系統(tǒng)內(nèi)置的屬性是不枚舉的。

? ? 我們可以通過對象的hasOwnProperty方法,判斷某個屬性是否為該對象自身屬性,而非繼承屬性,加如下判斷后,sex屬性不會被枚舉出來:

? ? 另一種操作符in,也可以用來判斷某個對象是否有某個屬性,但是它的判斷會包含原型屬性:

3. 對象類型判斷

? ? 我們可以通過typeof運算符來判斷某個原始值是否為某個類型,但對于對象,它的返回值為‘object’,而我們需要判斷該對象是否為某個構(gòu)造函數(shù)的實例,這時可以通過instanceof運算符來判斷:

? ? a instanceof A:判斷a對象是否為A構(gòu)造函數(shù)構(gòu)造出來,并且如果a對象的原型鏈上有A的原型,那么它的返回結(jié)果也是true。

? ? 另一種判斷對象類型的方式是,調(diào)用Object.prototype.toString方法,判斷返回結(jié)果,如下數(shù)組和對象的返回結(jié)果是不同的:

? ? 需要注意的是,該方法對js內(nèi)置對象和客戶端對象的支持比較好,但對自定義對象的返回結(jié)果都是"[object Object]"。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容