在 JavaScript 中,每个对象都有一个原型(prototype)对象。原型对象是一个普通的对象,它包含了一组属性和方法,这些属性和方法可以被该对象的实例所共享使用。在 JavaScript 中,每个对象都有一个隐式的原型对象,我们可以通过 __proto__
属性来访问它。但是,在 ES6 中,我们可以使用 Object.setPrototypeOf()
方法来设置对象的原型,从而更加方便地操作对象的原型。
Object.setPrototypeOf() 方法
Object.setPrototypeOf()
方法是 ES6 中新增的一个方法,它用于设置一个对象的原型。该方法接受两个参数,第一个参数是要设置原型的对象,第二个参数是要设置的原型对象。示例代码如下:
--- ---- - --- --- ---- - - ---------- - ---------------------- - -- --------------------------- ------ ---------------- -- ------
上面的代码中,我们创建了两个对象 obj1
和 obj2
,然后使用 Object.setPrototypeOf()
方法将 obj1
的原型设置为 obj2
。这样,obj1
就可以继承 obj2
的 sayHello()
方法,从而可以调用该方法。
Object.create() 方法
在 ES6 之前,我们可以使用 Object.create()
方法来创建一个新对象,并将其原型设置为指定的对象。示例代码如下:
--- ---- - - ---------- - ---------------------- - -- --- ---- - -------------------- ---------------- -- ------
上面的代码中,我们首先创建了一个对象 obj2
,它包含了一个 sayHello()
方法。然后,我们使用 Object.create()
方法创建了一个新对象 obj1
,并将其原型设置为 obj2
。这样,obj1
就可以继承 obj2
的 sayHello()
方法,从而可以调用该方法。
使用 Object.setPrototypeOf() 方法的优点
虽然在 ES6 之前我们也可以使用 Object.create()
方法来设置对象的原型,但是使用 Object.setPrototypeOf()
方法有以下优点:
更加简洁:使用
Object.setPrototypeOf()
方法只需要一行代码,而使用Object.create()
方法需要两行代码。更加灵活:使用
Object.setPrototypeOf()
方法可以在任何时候更改对象的原型,而使用Object.create()
方法则只能在对象创建时设置原型。
总结
在 JavaScript 中,原型是一个非常重要的概念。ES6 中新增的 Object.setPrototypeOf()
方法可以方便地设置对象的原型,从而更加灵活地操作对象的原型。在实际开发中,我们可以根据具体情况选择使用 Object.setPrototypeOf()
方法或 Object.create()
方法来设置对象的原型。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65da753d1886fbafa47b8cd2