當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
JavaScript中Object.keys、Object.getOwnPropertyNames区别
生活随笔
收集整理的這篇文章主要介紹了
JavaScript中Object.keys、Object.getOwnPropertyNames区别
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
定義
Object.keys
定義:返回一個對象可枚舉屬性的字符串數組;
Object.getOwnPropertyNames
定義:返回一個對象可枚舉、不可枚舉屬性的名稱;
?
屬性的可枚舉性、不可枚舉性
定義:可枚舉屬性是指那些內部 “可枚舉” 標志設置為 true 的屬性,對于通過直接的賦值和屬性初始化的屬性,該標識值默認為即為 true,對于通過 Object.defineProperty 等定義的屬性,該標識值默認為 false。
?
例子
var obj = { "prop1": "v1" }; Object.defineProperty(obj, "prop2", { value: "v2", writable: false }); console.log(Object.keys(obj).length); //output:1 console.log(Object.getOwnPropertyNames(obj).length); //output:2 console.log(Object.keys(obj)); //output:Array[1] => [0: "prop1"] console.log(Object.getOwnPropertyNames(obj)); //output:Array[2] => [0: "prop1", 1: "prop2"]?
內置的判斷,訪問和迭代方法
| 功能 | 可枚舉 | 可枚舉、不可枚舉 |
| 判斷 | propertyIsEnumerable | ?in/hasOwnProperty |
| 訪問 | ?Object.keys | ?Object.getOwnPropertyNames |
| 迭代 | ?for..in.. | ?Object.getOwnPropertyNames |
?
?
?
?
?
?
?
?
實戰
var obj = { "prop1": "v1" }; Object.defineProperty(obj, "prop2", { value: "v2", writable: true });console.log(obj.hasOwnProperty("prop1")); //output: true console.log(obj.hasOwnProperty("prop2")); //output: true console.log(obj.propertyIsEnumerable("prop1")); //output: true console.log(obj.propertyIsEnumerable("prop2")); //output: false console.log('prop1' in obj); //output: true console.log('prop2' in obj); //output: truefor (var item in obj) {console.log(item); } //output:prop1for (var item in Object.getOwnPropertyNames(obj)) {console.log(Object.getOwnPropertyNames(obj)[item]); } //ouput:[prop1,prop2]?
相關鏈接
Object.hasOwnProperty()
Object.propertyIsEnumerable()
Object.getOwnPropertyNames()
Object.keys()
屬性的可枚舉性和所有權?
?
總結
以上是生活随笔為你收集整理的JavaScript中Object.keys、Object.getOwnPropertyNames区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 面试官:你说说互斥锁、自旋锁、读写锁、悲
- 下一篇: eclipse打开文件所在目录