Javascript数据结构——Object

在JavaScript中,几乎所有的对象都是Object类型的实例,它们都会从Object.prototype继承属性和方法。

  • 如果给定值是 nullundefined,将会创建并返回一个空对象
  • 如果传进去的是一个基本类型的值,则会构造其包装类型的对象
  • 如果传进去的是引用类型的值,仍然会返回这个值,经他们复制的变量保有和源对象相同的引用地址
1.常见的对象方法
  • Object.keys().length 对象数据长度的查询
const target = { a: 1, b: 2 };
const source = { b: 4, c: 5 };
const length=Object.keys(target).length
console.log(length)
  • Object.assign() 方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。
const target = { a: 1, b: 2 };   //目标对象
const source = { b: 4, c: 5 };  //源对象
const returnedTarget = Object.assign(target, source);

console.log(target);  // { a: 1, b: 4, c: 5 }
console.log(returnedTarget);// { a: 1, b: 4, c: 5 }
  • Object.create()方法创建一个新对象,使用现有的对象来提供新创建的对象的_proto_。
const person = {
  isHuman: false,
  printIntroduction: function() {
    console.log(`My name is ${this.name}. Am I human? ${this.isHuman}`);
  }
};
const me = Object.create(person);
me.name = 'Matthew'; 
me.isHuman = true; 

me.printIntroduction();
// expected output: "My name is Matthew. Am I human? true"
  • Object.entries()方法返回一个给定对象自身可枚举属性的键值对数组,其排列与使用 for...in循环遍历该对象时返回的顺序一致(区别在于 for-in 循环还会枚举原型链中的属性)。
const object1 = {
  a: 'somestring',
  b: 42
};

for (const [key, value] of Object.entries(object1)) {
  console.log(`${key}: ${value}`);
}
// expected output:
// "a: somestring"
// "b: 42"
// order is not guaranteed
  • Object.is(value1,value2) 方法判断两个值是否为同一个值。
const target = { a: 1, b: 2 };
const source = { b: 4, c: 5 };

const decide=Object.is(target, source);
console.log(decide)  //flase
  • Object.values(obj)方法返回一个给定对象自身的所有可枚举属性值的数组,值的顺序与使用for...in]循环的顺序相同 ( 区别在于 for-in 循环枚举原型链中的属性 )。
var obj = { foo: 'bar', baz: 42 };
console.log(Object.values(obj)); // ['bar', 42]
  • Object.keys() 方法会返回一个由一个给定对象的自身可枚举属性组成的数组,数组中属性名的排列顺序和正常循环遍历该对象时返回的顺序一致 。
var obj = { foo: 'bar', baz: 42 };
console.log(Object.keys(obj)); // ['foo', 'baz']
  • delete obj.x 删除对象obj的x键值对,返回值是个布尔值,说明有没有删除成功。
var obj = { foo: 'bar', baz: 42 };
delete obj.foo
console.log(obj); // { baz: 42 }

你可能感兴趣的:(Javascript数据结构——Object)