欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JS-对象常用方法整理

程序员文章站 2022-06-22 11:02:18
查看对象的方法,继续控制台输出,如图: hasOwnProperty():返回一个布尔值,指示对象自身属性中是否具有指定的属性(也就是,是否有指定的键)。 isPrototypeOf():用于测试一个对象是否存在于另一个对象的原型链上。 toString():返回一个表示该对象的字符串。 value ......

查看对象的方法,继续控制台输出,如图:

 

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(); // {}

 

 

JS-对象常用方法整理

 

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

 let p = object.getprototypeof(obj);
 proto === p; // true
 

 

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

 

先这么多吧。