javascript中Object对象常用方法总结

1.Object.create

Object.create的语法:Object.create(proto, [ propertiesObject ]) ,创建一个对象,新创建的对象的prototype指向第一个参数,第二个参数是为新创建对象添加属性

  • proto是原型对象
  • propertiesObject是属性的配置

在详解Object.create之前,我们先回忆一下常用的创建对象的方法: 1.{},2.new Object();

1,2除了能不能传参数的区别外,基本没其它区别。 但是它们跟Object.create的区别可就大了,接下来我们分析下用new创建对象跟用Object.create的区别:

先了解下new一个对象都做了哪些操作:

  1. 创建一个新对象
  2. 将新对象的原型指向构造函数的原型
  3. 执行构造函数,绑定this
  4. 返回这个对象

例://new Person()  //Person是一个构造函数

var obj=new Object()

obj.__proto__ = Person.prototype

var res = Person.call(obj)

return res instanceof Object ? res : obj

 

例://Object.create(Person)

var f = function() {}

f.prototype=Person

return nee f();

从上可以看出Object.create(Person)创建的对象,并没有去调用Person的构造函数,因此,此时创建的对象不会继承Person自身的属性

 

2.Object.keys(obj)

发方法主要用来枚举给定对象的key,如var a=[1,2,3],  枚举a的结果就是:["0", "1", "2"], 它与for in的区别在于,Object.keys不会遍历到该对象的原型链上去。

 

3.Object.assign(target,source1,source2,...)

该方法主要用于对象的合并,将源对象source的所有可枚举属性合并到目标对象target上,此方法只拷贝源对象的自身属性,不拷贝继承的属性。

该方法合并的操作是浅拷贝,并不是深拷贝,他只能对值进行复制。特别要注意的是,该方法处理数组时,会把数组当成对象来处理

Object.assign([1, 2, 3], [4, 5]) // 把数组当作对象来处理

//结果 [4, 5, 3]

 

 

 

 

 

你可能感兴趣的:(javascript)