JS-对象常用方法整理
查看对象的方法,继续控制台输出,如图:
hasownproperty():
返回一个布尔值,指示对象自身属性中是否具有指定的属性(也就是,是否有指定的键)。
let object1 = new object(); object1.property1 = 42; object1.hasownproperty('property1'); // true object1.hasownproperty('tostring'); // false
isprototypeof():
用于测试一个对象是否存在于另一个对象的原型链上。
function foo() {} function bar() {} function baz() {} bar.prototype = object.create(foo.prototype); baz.prototype = object.create(bar.prototype); let baz = new baz(); baz.prototype.isprototypeof(baz); // true bar.prototype.isprototypeof(baz); // true foo.prototype.isprototypeof(baz); // true object.prototype.isprototypeof(baz); // true
tostring()
:返回一个表示该对象的字符串。
let o = new object(); o.tostring(); // '[object object]'
valueof():
返回指定对象的原始值。
let o = new object(); o.valueof(); // {}
object.assign():
用于将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。
let target = { a: 1, b: 2 }; let source = { b: 4, c: 5 }; let returnedtarget = object.assign(target, source); target; // { a: 1, b: 4, c: 5 } returnedtarget; // { a: 1, b: 4, c: 5 }
object.create():创建一个新对象,使用现有的对象来提供新创建的对象的__proto__。即创建一个以指定的对象为原型的子对象。
object.setprototypeof():设置一个指定的对象的原型 ( 即, 内部[[prototype]]属性)到另一个对象或null。
object.getprototypeof():
返回指定对象的原型(内部[[prototype]]
属性的值)。
let person = {name: 'people'}; let me = object.create(person); me.name; // 'people'
let proto = {}; let obj = { x: 10 }; object.setprototypeof(obj, proto); proto.y = 20; proto.z = 40; obj.x // 10 obj.y // 20 obj.z // 40
object.defineproperties():
直接在一个对象上定义新的属性或修改现有属性,并返回该对象。
let obj = {}; object.defineproperties(obj, { 'property1': { value: true, writable: true }, 'property2': { value: 'hello', writable: false } }); obj.property1; // true obj.property2; // 'hello'
object.defineproperty()
:会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象。
let o = {}; let bvalue = 1; object.defineproperty(o, "b", { get : function(){ return bvalue; }, set : function(newvalue){ bvalue = newvalue; console.log('bvalue变了'); }, enumerable : true, configurable : true }); console.log(o.b); //1 o.b = 2; //'bvalue变了'
object.keys()
:会返回一个给定对象的自身可枚举属性组成的数组,数组中属性名的排列顺序和使用for...in循环遍历该对象时返回的顺序一致 。
object.values()
:返回一个给定对象自身的所有可枚举属性值的数组,值的顺序与使用for...in循环的顺序相同 ( 区别在于 for-in 循环枚举原型链中的属性 )。
object.entries()
:返回一个给定对象自身可枚举属性的键值对数组,其排列与使用for...in循环遍历该对象时返回的顺序一致(区别在于 for-in 循环还会枚举原型链中的属性)。
object.fromentries()
:把键值对列表转换为一个对象,是object.entries()
的逆操作。
let obj = { a: 1, b: 2, c: 3 }; let keys = object.keys(obj); let values = object.values(obj); let entries = object.entries(obj); keys; // ['a','b','c'] values; // [1,2,3] entries; // [['a',1],['b',2],['c',3]] let fromentries = object.fromentries(entries); fromentries; // {a: 1, b: 2, c: 3}
object.is():
判断两个值是否是相同的值。
object.is('foo', 'foo'); // true object.is(window, window); // true object.is('foo', 'bar'); // false object.is([], []); // false var foo = { a: 1 }; var bar = { a: 1 }; object.is(foo, foo); // true object.is(foo, bar); // false object.is(null, null); // true // 特例 object.is(0, -0); // false object.is(0, +0); // true object.is(-0, -0); // true object.is(nan, 0/0); // true
先这么多吧。