学习 ES8 中引入的 Object.getPrototypeOf() 方法及其用法

· 约 4 分钟读完

在 ES8 中,引入了一个新的方法 Object.getPrototypeOf(),它可以用来获取一个对象的原型。这个方法在前端开发中非常有用,因为我们经常需要通过原型链来访问对象的属性和方法。

什么是原型链?

在 JavaScript 中,每个对象都有一个原型,它是一个指向另一个对象的引用。如果一个对象没有指定原型,那么它的原型就是 Object.prototype。当我们访问一个对象的属性或方法时,如果这个对象本身没有这个属性或方法,就会沿着原型链向上查找,直到找到为止。

例如,我们有一个对象 person:

我们可以通过 person.sayHello() 来调用它的 sayHello 方法。如果我们尝试访问 person 的一个不存在的属性,例如 person.address,那么 JavaScript 就会沿着原型链向上查找,直到找到 Object.prototype。如果 Object.prototype 也没有这个属性,那么就会返回 undefined。

Object.getPrototypeOf() 方法的用法

Object.getPrototypeOf() 方法可以用来获取一个对象的原型。它的语法非常简单:

其中 obj 是要获取原型的对象。这个方法会返回 obj 的原型,如果 obj 没有原型,就返回 null。

例如,我们可以使用 Object.getPrototypeOf() 来获取 person 的原型:

在这个例子中,我们获取到了 person 的原型,它是一个空的对象 {},即 Object.prototype。

Object.getPrototypeOf() 方法的指导意义

Object.getPrototypeOf() 方法的主要作用是让我们能够更好地理解 JavaScript 中的原型链机制。它可以让我们快速地获取一个对象的原型,从而更好地理解对象的属性和方法是如何继承的。

同时,Object.getPrototypeOf() 方法也可以用来检查一个对象是否是某个类的实例。例如,我们可以使用这个方法来检查一个对象是否是数组:

在这个例子中,我们使用 Object.getPrototypeOf() 来获取 arr 的原型,然后判断它是否等于 Array.prototype。如果相等,说明 arr 是一个数组。

示例代码

下面是一个使用 Object.getPrototypeOf() 方法的示例代码,它演示了一个简单的类继承的例子:

在这个例子中,我们定义了一个 Animal 类和一个 Dog 类,Dog 类继承自 Animal 类。我们创建了一个 Dog 实例 d,并使用 Object.getPrototypeOf() 方法来检查它的原型,以及它的原型的原型。最后,我们调用 d 的 speak() 方法,它会输出 "Mitzie barks."。

这个例子展示了 Object.getPrototypeOf() 方法的用法,同时也演示了类继承的基本用法。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67d164d3a941bf71342f6e83