一、静态方法
- Object.keys()和Object.getOwnPropertyNames()
- 二者都可以用来遍历对象的属性
- 区别:
- Object.keys方法的参数是一个对象,返回一个数组。该数组的成员都是该对象自身的(而不是继承的)所有属性
- Object.keys方法只返回可枚举的属性
- Object.getOwnPropertyNames方法,不仅返回可枚举的属性,还返回不可枚举的属性
let arr = [1,2,3]
Object.keys(arr) // ["0", "1", "2"]
Object.getOwnPropertyNames(arr) // ["0", "1", "2", "length"]
二、实例方法
- valueOf()方法:返回当前对象对应的值。
- toString()方法:返回当前对象对应的字符串形式。
- 数组、字符串、函数、Date 对象都分别部署了自定义的toString方法,覆盖了Object.prototype.toString方法。
- toLocalString()方法:返回当前对象对应的本地字符串形式。
- 有三个对象自定义了toLocaleString方法:Number,Array,Date
- hasOwnProperty()方法:判断某个属性是否为当前对象自身的属性,还是继承自原型对象的属性。
- isPrototypeOf()方法:判断当前对象是否为另一个对象的原型。
- propertyIsEnumerable()方法:判断某个属性是否可枚举。
let obj = {name:'lewis',age:17}
obj.valueOf() // {name: "lewis", age: 17} 返回对象自身
----------
obj.toString() // "[object Object]"
[1, 2, 3].toString() // "1,2,3"
'123'.toString() // "123"
(function () {
return 123;
}).toString()
// "function () {
// return 123;
// }"
new Date().toString() // "Tue Jan 29 2019 17:02:26 GMT+0800 (中国标准时间)"
----------
Array.prototype.isPrototypeOf([]) // true
[].propertyIsEnumerable('length') // false 数组的length属性不可以被枚举
网友评论