js--for..in和in操作符

兩種使用方式:
  1. for..in
    • 返回所有能夠通過對象訪問的、可枚舉的屬性,其中包括實例屬性,也包括原型屬性。
      • 通過obj.hasOwnProperty(xxx)可以判斷某個屬性是否是實例屬性。
    • Object.keys()傳入一個對象作為參數(shù),可以返回僅存在于該對象上的所有可枚舉屬性的字符串?dāng)?shù)組,不包括原型對象上的屬性。
    • Object.getOwnPropertyNames(),傳入一個對象作為參數(shù),可以返回所有存在于該實例對象上的屬性名稱,不論是否可枚舉,但不包括原型對象上的屬性。
      ES5中,將constructor和prototype的enumerable設(shè)置為false.。
  2. 單獨使用
    • in操作符會在通過對象能夠訪問給定屬性時返回true,無論該實例存在于實例中還是原型中。
    • 區(qū)別:obj.hasOwnProperty(),只有在屬性存在于實例中時才返回true,如果只存在于原型對象中,實例中沒有,則會返回false。
    • 結(jié)合in和obj.hasOwnProperty()可以找出只存在于原型對象上的屬性:return !obj.hasOwnProperty( name ) && ( name in obj ); ,如果總體返回true,則obj.hasOwnProperty( name )返回也是true,則是實例上的屬性,如果總體返回false,說明obj.hasOwnProperty( name )為false,如果此時name in obj為true,則可以確定這是只存在于原型對象上的屬性。
最后編輯于
?著作權(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)容