javaScript Object对象方法getOwnPropertyNames/getOwnPropertySymbols
getOwnPropertyNames作用:获取对象的属性名称
getOwnPropertyNames中如果传入对象,则会返回对象的属性名称,如果传入数组,则会返回数组的索引值。使用场景如下:
// 数组
var arr = ["a", "b", "c"];
console.log(Object.getOwnPropertyNames(arr));
// ["0", "1", "2", "length"]
// 对象
var obj = { 0: "a", 1: "b", 2: "c"};
console.log(Object.getOwnPropertyNames(obj));
// ["0", "1", "2"]
getOwnPropertySymbols作用:获取对象的symbol属性名称
首先,为什么除了getOwnPropertyNames方法后,又要多一个getOwnPropertySymbols方法,因为在一个对象中,如果存在symbol基本对象,getOwnPropertyNames方法是不能获取到对应symbol的值的,只能通过getOwnPropertySymbols获取。使用案例如下:
var obj = {};
var a = Symbol("a");
var b = Symbol.for("b");
obj[a] = "localSymbol";
obj[b] = "globalSymbol";
console.log(Object.getOwnPropertySymbols(obj))
/**结果
[
0: Symbol(a)
1: Symbol(b)
]
*/