object的常用方法

537 阅读2分钟

原型方法(静态方法)

  • Object.assign() Object.assign() 方法用于将所有可枚举属性的值从一个或多个源对象分配到目标对象,它将返回目标对象。

语法:

Object.assign(target, ...sources)
//参数:target:目标对象,sources:源对象

来个荔枝:

var obj1 = {name:'Marry',id:0}, 
    obj2 = {age:18,address:'北京',name:'Jack'};
Object.assign(obj1,obj2); // {id:0,age:18,address:'北京',name:'Jack'}
//如果obj1和obj2有同名属性,obj2的覆盖obj1的;否则保留obj1的所有属性,增加obj2中的所有属性
  • Object.defineProperty() Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回此对象。

语法:

Object.defineProperty(obj, prop, descriptor)
//参数:obj:要定义属性的对象,prop:要定义或修改的属性的名称或Symbol,descriptor:要定义或修改的属性描述符

来个荔枝:

var obj = {name:'Jack',age:18};
Object.defineProperty(obj,'age',{value:38}); // {name: "Jack", age: 38}
Object.defineProperty(obj,'address',{value:'ChengDu'}); // {name:"Jack",age:38,address:'ChengDu'}
  • Object.keys() Object.keys() 方法会返回一个由一个给定对象的自身可枚举属性组成的数组,数组中属性名的排列顺序和正常循环遍历该对象时返回的顺序一致

语法:

Object.keys(obj)
//参数:obj:要返回其枚举自身属性的对象

来个荔枝:

var obj = {name:'Jack',age:18};
Object.keys(obj); // ["name", "age"]
  • Object.values()

Object.values()方法返回一个给定对象自身的所有可枚举属性值的数组,值的顺序与使用for...in循环的顺序相同 ( 区别在于 for-in 循环枚举原型链中的属性 )。

语法:

Object.values(obj)
//参数:obj:被返回可枚举属性值的对象

来个荔枝:

var obj = {name:'Jack',age:18};
Object.values(obj); // ["Jack", 18]

实例方法

  • Object.prototype.hasOwnProperty()

hasOwnProperty()  方法会返回一个布尔值,指示对象自身属性中是否具有指定的属性(也就是,是否有指定的键)。

语法:

obj.hasOwnProperty(prop)
//参数:prop:要检测的属性的 String字符串形式表示的名称,或者 Symbol。

来个荔枝:

var obj = {name:'Jack',age:18};
obj.hasOwnProperty('name'); // true
obj.hasOwnProperty('toString'); // false,因为它是原型上的方法
  • Object.prototype.toString()

toString() 方法返回一个表示该对象的字符串。

语法:

obj.toString();

来个荔枝:

var obj = {name:'Jack',age:18},
    arr = [1,2];
obj.toString(); // "[object Object]"
arr.toString(); // "1,2"

--End--