Object
- Object.prototype.constructor:
constructor 属性返回 [Object]的构造函数(用于创建实例对象)。注意,此属性的返回值是对函数本身的引用,而不是一个包含函数名称的字符串。点击查看
- Object.create():该方法用于创建一个新对象,使用现有的对象来作为新创建对象的原型(prototype)点击查看
- Object.defineProperty():该方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回此对象。备注: 应当直接在 [
Object]构造器对象上调用此方法,而不是在任意一个 Object 类型的实例上调用。语法:Object.defineProperty(obj, prop, descriptor)点击查看
const object1 = {};
Object.defineProperty(object1, 'property1', {
value: 42,
writable: false
});
object1.property1 = 77;
console.log(object1.property1);
- Object.defineProperties():该方法直接在一个对象上定义新的属性或修改现有属性,并返回该对象。语法:
Object.defineProperties(obj, props)点击查看
var obj = {};
Object.defineProperties(obj, {
'property1': {
value: true,
writable: true
},
'property2': {
value: 'Hello',
writable: false
}
});
- Object.getOwnPropertyDescriptor():方法返回指定对象上一个自有属性对应的属性描述符(不包括原型链)。语法:
Object.getOwnPropertyDescriptor(obj, prop)点击查看
const object1 = {
property1: 42
};
const descriptor1 = Object.getOwnPropertyDescriptor(object1, 'property1');
console.log(descriptor1.configurable);
console.log(descriptor1.value);
- Object.getOwnPropertyDescriptors():该方法用来获取一个对象的所有自身属性的描述符。语法:Object.getOwnPropertyDescriptors(obj)。点击查看
- Object.getPrototypeOf():该方法返回指定对象的原型(内部
[[Prototype]]属性的值)。语法:Object.getPrototypeOf(object)点击查看
const prototype1 = {};
const object1 = Object.create(prototype1);
console.log(Object.getPrototypeOf(object1) === prototype1);
- Object.setPrototypeOf() 方法设置一个指定的对象的原型 ( 即,内部 [[Prototype]] 属性)到另一个对象或 [
null]。点击查看
- Object.prototype.toString():该方法返回一个表示该对象的字符串。点击查看
var toString = Object.prototype.toString;
toString.call(new Date);
toString.call(new String);
toString.call(Math);
toString.call(undefined);
toString.call(null);
- Object.prototype.isPrototypeOf():该方法用于测试一个对象是否存在于另一个对象的原型链上。备注:
isPrototypeOf() 与 [instanceof]运算符不同。在表达式 "object instanceof AFunction"中,object 的原型链是针对 AFunction.prototype 进行检查的,而不是针对 AFunction 本身。点击查看
- Object.prototype.hasOwnProperty():该方法会返回一个布尔值,指示对象自身属性中是否具有指定的属性(也就是,是否有指定的键)。点击查看
const object1 = {};
object1.property1 = 42;
console.log(object1.hasOwnProperty('property1'));
console.log(object1.hasOwnProperty('toString'));
- Object.prototype.propertyIsEnumerable():该方法返回一个布尔值,表示指定的自身属性是否可枚举(不包括原型链)。点击查看
- Object.keys():该方法会返回一个由一个给定对象的自身可枚举属性组成的数组,数组中属性名的排列顺序和正常循环遍历该对象时返回的顺序一致点击查看
var arr = ['a', 'b', 'c'];
console.log(Object.keys(arr));
var obj = { 0: 'a', 1: 'b', 2: 'c' };
console.log(Object.keys(obj));
- Object.getOwnPropertyNames():该方法返回一个由指定对象的所有自身属性的属性名(包括不可枚举属性但不包括 Symbol 值作为名称的属性)组成的数组。语法:
Object.getOwnPropertyNames(obj)点击查看
var arr = ["a", "b", "c"];
console.log(Object.getOwnPropertyNames(arr).sort());
var obj = { 0: "a", 1: "b", 2: "c"};
console.log(Object.getOwnPropertyNames(obj).sort());
- Object.getOwnPropertySymbols():该方法返回一个给定对象自身的所有 Symbol 点击查看
- Object.values():该方法返回一个给定对象自身的所有可枚举属性值的数组,值的顺序与使用[
for...in]循环的顺序相同 ( 区别在于 for-in 循环枚举原型链中的属性 )。点击查看
var obj = { foo: 'bar', baz: 42 };
console.log(Object.values(obj));
var obj = { 0: 'a', 1: 'b', 2: 'c' };
console.log(Object.values(obj));
var an_obj = { 100: 'a', 2: 'b', 7: 'c' };
console.log(Object.values(an_obj));