Object的API众多且重要,按照Object原型方法、进行分类
Object原型方法(所有实例共享)
以下方法来自于Object.prototype,参考《红宝书》P56
(1)constructor
用于创建当前对象的函数
(2)hasOwnProperty(propertyName)
用于判断当前对象实例(不是原型)上是否存在给定的属性,要检查的属性名必须是字符串(如obj.hasOwnProperty("name")
)或Symbol
let person = {
name: 'Katrina'
};
console.log(person.hasOwnProperty('name')); // true
(3)isPrototypeOf(object)
用于判断当前对象是否为另一个对象的原型
let person = {
name: 'Katrina',
age: 18,
};
let p = Object.create(person);
console.log(person.isPrototypeOf(p)); // true
(4)propertyIsEnumerable(propertyName)
用于判断给定的属性是否可以使用for-in 语句枚举,属性名必须是字符串
let person = {
};
Object.defineProperty(person, 'name', {
enumerable:true,
value: 'Katrina',
});
Object.defineProperty(person, 'age', {
enumerable:false,
value: 18,
});
console.log(person.propertyIsEnumerable('name')); // true
console.log(person.propertyIsEnumerable('age')); // false
(5)toLocaleString()
返回对象的字符串表示,该字符串反映对象所在的本地化执行环境
let person = {
name: 'Katrina',
age: 18,
};
person.toLocaleString(); // '[object Object]'
(6)toString()
返回对象的字符串表示
let person = {
name: 'Katrina',
age: 18,
};
person.toString(); // '[object Object]'
(7) valueOf()
返回对象对应的字符串、数值或布尔值表示,通常与toString()的返回值相同
let person = {
name: 'Katrina',
age: 18,
};
console.log(person.valueOf()); // {name: Katrina, age: 18}
设置原型方法
(1)Object.create() 【ES5】
Object.create()
用于创建一个新对象,使用现有的对象来作为新创建对象的原型。
语法如下:
Object.create(proto);
Object.create(proto, propertiesObject);
参数说明:
proto
:新建对象的原型对象
propertiesObject
(可选):传入对象的可枚举属性将为新创建的对象添加指定的属性值和对应的属性描述符,这些属性对应于Object.defineProperties()
的第二个参数
返回值:
一个新对象,带着指定的原型对象及其属性
let person = {
name: 'Katrina',
age: 18,
};
let p = Object.create(person);
console.log(person.isPrototypeOf(p)); // true
(2)Object.setPrototypeOf(obj, prototype) 【ES6】
Object.setPrototypeOf()
方法设置一个指定的对象的原型 ( 即,内部 [[Prototype]] 属性)到另一个对象或