javascript基础系列之Object
Object 是 JavaScript 的一种数据类型。它用于存储各种键值集合和更复杂的实体。
Object函数对象和实例对象
删除对象属性 delete
1 2 3 4 5 6
| const obj = { a: 1, b: 2 } delete obj.a; console.log(obj);
|
静态方法
Object.assign
1 2 3 4 5
| const target = {a: 1}; const source = {b: 2}; Object.assign(target, source); console.log(target);
|
Object.create
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| const parent = { name: 'alan', fn: function(){ console.log(this.name); console.log(this.habit); } } const obj = Object.create(parent); console.log(obj.__proto__ === parent); obj.name = 'alan1'; obj.habit = "basketball"; obj.fn(); console.log(obj);
|
Object.defineProperty
1 2 3 4 5 6 7 8 9 10
| const obj = {}; Object.defineProperty(obj, "a", { value: 1, configurable: true, writable: true, enumerable: true })
console.log(obj);
|
Object.defineProperties
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| const obj1 = {}; Object.defineProperties(obj1, { "prop1": { value: 2, writable: true, enumerable: true, configurable: true }, "prop2": { value: 3, writable: true, enumerable: true, configurable: true } }); console.log(obj1);
|
Object.entries
1 2 3 4 5 6 7 8
| const obj = { a: 1, b: 2 } for (const [key, value] of Object.entries(obj)) { console.log(`key=${key}, value=${value}`); }
|
Object.freeze
1 2 3 4 5 6 7
| const obj = { a: 1 } Object.freeze(obj); obj.a = 2; console.log(obj.a);
|
Object.getOwnPropertyDescriptor
1 2 3 4 5 6
| const obj = { a: 1 } const desc = Object.getOwnPropertyDescriptor(obj, 'a'); console.log(desc);
|
Object.getOwnPropertyNames, Object.getOwnPropertySymbols, Object.getPrototypeOf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| const proto = { a: 1, b: 2, [Symbol("a")]: "hello" } const obj = { a: 3, c: 4, [Symbol("b")]: "world" } console.log(Object.getOwnPropertyNames(obj)); console.log(Object.getOwnPropertySymbols(obj)); Object.setPrototypeOf(obj, proto); console.log(Object.getPrototypeOf(obj));
|
Object.is
1 2 3 4 5
| console.log(+0 === -0); console.log(Object.is(+0, -0)); console.log(NaN === NaN); console.log(Object.is(NaN, NaN));
|
Object.isExtensible
1 2 3 4 5 6 7 8 9 10 11 12
| const obj = {}; console.log(Object.isExtensible(obj)); Object.preventExtensions(obj); console.log(Object.isExtensible(obj));
const sealed = Object.isSealed({}); console.log(Object.isExtensible(sealed)); const obj1 = {}; console.log(Object.isExtensible(obj1)); Object.freeze(obj1); console.log(Object.isExtensible(obj1));
|
Object.isFrozen
1 2 3 4 5
| const obj = {}; console.log(Object.isFrozen(obj)); Object.freeze(obj); console.log(Object.isFrozen(obj));
|
Object.isSealed,Object.preventExtensions,Object.seal
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
const obj = { a: 1 }; console.log(Object.isSealed(obj)); Object.seal(obj);
console.log(Object.isSealed(obj));
var obj = { a: 1, b: 2 } console.log(Object.keys(obj));
|
Object.preventExtensions
1 2 3 4 5 6 7
| const obj = { a: 1 } Object.preventExtensions(obj); obj.b = 2; console.log(obj);
|
Object.setPrototypeof
1 2 3 4 5 6 7 8 9 10 11 12
| const proto = { a: "hello" } const obj = { a: "world", find(){ return super.a; } } Object.setPrototypeOf(obj, proto); console.log(obj.find());
|
Object.values
1 2 3 4 5 6
| var obj = { a: 1, b: 2 } console.log(Object.values(obj));
|
实例属性
Object.prototype.constructor
1 2
| console.log(Object.prototype.constructor === Object);
|
Object.prototype.proto
1 2 3
| const obj = {}; console.log(obj.__proto__ === Object.prototype);
|
实例方法
Object.prototype.defineGetter
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
const obj = { a: 1, b: 2s }; obj.__defineGetter__("num", function fn(){ return this.a + this.b; }); console.log(obj.num);
const obj1 = { a: 3, b: 4, get num() { return this.a + this.b; } } console.log(obj1.num);
const obj2 = { a: 5, b: 6 }; Object.defineProperty(obj2, "num", { get: function(){ return this.a + this.b; } }); console.log(obj2.num);
|
Object.prototype.defineSetter
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| const obj = {}; obj.__defineSetter__("a", function(val) { console.log(val); return 10; }); obj.a = 20;
const obj = { arr: [], set num(val) { this.arr.push(val); } } obj.num = 10; obj.num = 11; console.log(obj.arr);
|
Object.prototype.lookupGetter
1 2 3 4 5 6 7 8 9
|
const obj = { get habit() { return Math.random() > 0.5 ? "apple" : "banana"; } } console.log(obj.__lookupGetter__("habit")); console.log(Object.getOwnPropertyDescriptor(obj, "habit").get);
|
Object.prototype.lookupSetter
1 2 3 4 5 6 7 8 9
| const obj1 = { name: "", set habit(val) { this.name = val; } } console.log(obj1.__lookupSetter__("habit")); console.log(Object.getOwnPropertyDescriptor(obj1, "habit").set);
|
Object.prototype.hasOwnProperty
1 2 3 4 5 6
| const obj = { a: 1 } console.log(obj.hasOwnProperty("a")); console.log(obj.hasOwnProperty("toString"));
|
Object.prototype.isPrototypeOf
1 2 3 4 5 6 7
| function Foo(){} function Bar(){} Bar.prototype = Object.create(Foo.prototype); const bar = new Bar(); console.log(Foo.prototype.isPrototypeOf(bar)); console.log(Object.prototype.isPrototypeOf(bar));
|
Object.prototype.propertyIsEnumerable
1 2 3 4 5 6 7 8
| const obj = { a: 1 } const arr = [1]; console.log(obj.propertyIsEnumerable("a")); console.log(arr.propertyIsEnumerable(0)); console.log(arr.propertyIsEnumerable("length"));
|
Object.prototype.toLocaleString和toString
1 2 3 4 5 6
| const obj = {a: 1}; const date = new Date(); console.log(obj.toLocaleString()); console.log(date.toString()); console.log(date.toLocaleString());
|
Object.prototype.valueOf
1 2 3 4 5 6 7
| const obj = {a: 1}; const date = new Date(); function fn() {} console.log(obj.valueOf()); console.log(fn.valueOf()); console.log(date.valueOf());
|
参考文档
Object