ES6 中的 Object.create
是用来创建一个新的对象并继承自另一个对象的方法。这个方法在前端开发中具有广泛的应用场景,可以很方便地实现面向对象的编程方式,同时提高了代码重用的效率。
什么是 Object.create
在 ES6 之前,JavaScript 中实现继承的方式有很多种,可以使用原型链、构造函数等实现。但是这些方式都存在一些问题,例如难以实现多重继承、继承属性共享问题等。
Object.create
的出现,解决了这些继承方式存在的问题,并且提供了更加灵活的方式来创建和继承对象。
Object.create 的基本用法
Object.create
的基本语法如下:
Object.create(proto, [propertiesObject])
其中,proto
表示需要继承的原型对象,可以是一个简单的对象或者是 null
。propertiesObject
表示新对象的属性和值,可以是 null
或者一个对象。
下面是一个简单的示例:
-- -------------------- ---- ------- ----- ------ - - --------- - --------------- ---- -- - - ----------- - - ----- ------- - --------------------- - ----- - ------ ----- - --- ------------------ -- -- ---- -- ---
在这个示例中,定义了 person
对象,其中包含一个 sayName
方法。接着使用 Object.create
方法创建了一个新的 student
对象,这个对象继承自 person
对象。
继承原型链的顶部对象
在 Object.create
的参数中,如果原型对象是 null
,那么创建的新对象将没有原型,也就是不继承任何属性和方法。如下:
const obj = Object.create(null); console.log(obj.toString); // undefined console.log(obj.__proto__); // undefined
使用 Object.create 实现简单的继承
在面向对象编程中,继承是一个非常基础的概念。使用 Object.create
可以很方便地实现基于原型链的继承,从而降低代码重复度。
下面是一个继承的示例:
-- -------------------- ---- ------- ----- ------ - ----------------- - --------- - ----- - ----- - -------------- -- - - - ----------- - - ----- --- ------- ------ - ------------- - ------------- - - ----- --- - --- ------ ---------- -- - -- - ---
在这个示例中,定义了一个基类 Animal
和一个子类 Dog
,使用 extends
关键字实现了继承。Dog
类继承自 Animal
类,从而获得了 say
方法。
使用 Object.create 实现多重继承
在实际的开发中,经常会遇到需要继承多个类的情况。使用 Object.create
可以很方便地实现多重继承。
下面是一个继承多个类的示例:
-- -------------------- ---- ------- ----- ------ - ----------------- - --------- - ----- - --------- - --------------- ---- -- - - ----------- - - ----- ---------- - ------ - -------------- -- --------- - - ----- ------------ ------- ------ - ----------------- - ------------ - - ------------------------------------- ---------------------- ----- ------------ - --- -------------------- ----------------------- -- -- ---- -- --- -------------------- -- - -- ------
在这个示例中,使用 Object.assign
方法将 Programmer
类的原型对象的属性和方法复制到了 WebDeveloper
的原型对象中,从而实现了继承多个类的目的。
总结
Object.create
是用来创建一个新的对象并继承自另一个对象的方法。Object.create
提供了更加灵活的方式来创建和继承对象。- 可以使用
Object.create
实现基于原型链的继承,从而降低代码重复度。 Object.create
还可以实现继承多个类的目的,提高了代码的复用性。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64644373968c7c53b0523e79