分为 Object 静态方法和Object 实例方法
- 静态方法就是直接定义在Object 对象上
- 实力方法是定义在 Object.prototype上的,Object的实例可以使用(凡是定义在Object.prototype 上的属性和方法,可以被所有Object实例对象共享
Object静态方法
1. Object.keys Object.getOwnPropertyNames
Object.keys方法和Object.getOwnPropertyNames方法都用来遍历对象的属性
var obj = {
p1: 123,
p2: 456
};
Object.keys(obj) // ["p1", "p2"]
Object.getOwnPropertyNames(obj); //["p1", "p2"]
Object.keys方法只返回可枚举的属性, Object.getOwnPropertyNames方法还返回不可枚举的属性名
var a = ['Hello', 'World'];
Object.keys(a) // ["0", "1"]
Object.getOwnPropertyNames(a) // ["0", "1", "length"]
2. Object.getOwnPropertyDescriptor()
Object.getOwnPropertyDescriptor()方法可以获取属性描述对象。它的第一个参数是目标对象,第二个参数是一个字符串,对应目标对象的某个属性名
var obj = {
p: 'a'
}
Object.getOwnPropertyDescriptor(obj, 'p')
// Object {
value: "a",
writable: true,
enumerable: true,
configurable: true
}
3. Object.defineProperty()
Object.defineProperty() 方法允许通过属性描述对象,定义或者修改一个属性,然后返回修改后的对象
Object.defineProperty(object, propertyName, atttributesObject)
Object实例方法
1. Object.prototype.valueOf()
valueOf方法的作用是返回一个对象的“值”,默认情况下返回对象本身。
valueOf方法的主要用途是,JavaScript 自动类型转换时会默认调用这个方法
var obj = new Object();
1 + obj // "1[object Object]"
obj.valueOf = function (o) {
return 2;
}
obj + 1; //3
2. Object.prototype.toString()
toString方法的作用是返回一个对象的字符串形式,默认情况下返回类型字符串。
var o1 = new Object();
o1.toString() // "[object Object]"
var o2 = {a:1};
o2.toString() // "[object Object]"
通过自定义toString方法,可以让对象在自动类型转换时,得到想要的字符串形式
var obj = new Object();
obj.toString = function () {
return 'hello';
};
obj + ' ' + 'world' // "hello world"
应用: 判断数据类型
Object.prototype.toString.call(2) // "[object Number]"
Object.prototype.toString.call('1') // "[object String]"
Object.prototype.toString.call(true) // "[object Boolean]"
Object.prototype.toString.call(undefined) // "[object Undefined]"
Object.prototype.toString.call(null) // "[object Null]"
Object.prototype.toString.call(Math) // "[object Math]"
Object.prototype.toString.call({}) // "[object Object]"
Object.prototype.toString.call([]) // "[object Array]"
3. Object.prototype.toLocaleString()
Object.prototype.toLocaleString方法与toString的返回结果相同,也是返回一个值的字符串形式。
这个方法的主要作用是留出一个接口,让各种不同的对象实现自己版本的toLocaleString,用来返回针对某些地域的特定的值。
目前,主要有三个对象自定义了toLocaleString方法。
- Array.prototype.toLocaleString()
- Number.prototype.toLocaleString()
- Date.prototype.toLocaleString()
4. Object.prototype.hasOwnProperty()
Object.prototype.hasOwnProperty方法接受一个字符串作为参数,返回一个布尔值,表示该实例对象自身是否具有该属性。
var obj = new Object {
p: '123'
}
obj.hasOwnProperty('p') // true
obj.hasOwnProperty('toString') // false