delete運算符可以刪除對象的屬性
代碼如下:
delete person.age //即person不再有屬性age
delete person['age'] //或者這樣
delete只是斷開屬性和宿主對象的聯系,而不會去操作屬性中的屬性 看到delete a.p之后b.x仍然為1
delete只能刪除自有屬性,不能刪除繼承屬性(要刪除繼承屬性必須從定義這個屬性的原型對象上刪除它,當然,這會影響到所有繼承來自這個原型的對象)
當然了,可配置的屬性才能用到delete
比如
2.檢測屬性
使用 “in"
in 運算符希望它的左操作數是一個字符串或者可以轉換為字符串,希望它的右操作數是一個對象
使用hasOwnProperty()或者propertyIsEnumerable() --- 后者是前者的增強
顧明思議
只有檢測到是自由屬性并是可枚舉的屬性時,后者才返回true
當然,也可以直接用 ”!=="運算符判斷
3.枚舉屬性
拓展1:
每個對象都有與之相關的原型(prototype)、類(class)、可擴展性(extensible)
要檢測一個對象是否是另一個對象的原型(或處于原型鏈中),可以使用isPrototypeOf()方法
當然,isPrototypeOf()方法和instanceof運算符非常類似
instanceof運算符希望它的左操作數是一個對象,右操作數標識對象的類。如果左側的對象是右側類的實例,則表達式返回true,否則返回false
拓展2:
對象的類屬性是一個字符串,用以表示對象的類型信息
一般調用toString()方法后返回形如 [object class]的形式
比如
代碼如下:
var obj = {x:1,y:2};
console.log(obj.toString());//[object Object]
所以要想獲取對象的類,就可以通過返回的字符串中找出 “class"字段 使用 slice(8,-1)
比如
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com