跳到主要内容

JavaScript 对象 getPrototypeOf() 方法

Object.getPrototypeOf() 方法返回指定对象的原型。

示例

const obj = { id: 711 };

// 查找 obj 的原型
console.log(Object.getPrototypeOf(obj));

// 输出:{}

getPrototypeOf() 语法

getPrototypeOf() 方法的语法是:

Object.getPrototypeOf(obj);

这里,getPrototypeOf() 是一个静态方法。因此,我们需要使用类名 Object 来访问该方法。

getPrototypeOf() 参数

getPrototypeOf() 方法接受:

  • obj - 需要返回原型的对象。

getPrototypeOf() 返回值

getPrototypeOf() 方法返回:

  • 给定对象的原型。
  • 如果没有继承属性,则返回 null

注意:如果 obj 参数不是对象,则 getPrototypeOf() 方法在 ES5 中会抛出 TypeError 异常。然而,自 ES2015 起,参数将被强制转换为 Object,不会抛出任何异常。

示例 1:JavaScript Object.getPrototypeOf()

// 创建一个名为 person 的对象
let person = {
name: "Vincent",
age: 56,
};

// 获取 person 对象的原型
console.log(Object.getPrototypeOf(person));

// 输出:{}

在这个示例中,我们创建了一个名为 person 的自定义对象。然后,我们使用 getPrototypeOf() 方法打印其原型。

从输出可以看出,person 的原型是一个空对象 {}

注意:默认情况下,对象从 Object.prototype 继承。Object.prototype 的原型是一个空对象 {},这也是 JavaScript 中所有对象的终极原型。

示例 2:使用 setPrototypeOf() 的 getPrototypeOf()

// 创建一个空对象
let obj = {};

// 创建一个名为 person 的对象
let person = {
name: "Vincent",
age: 56,
};

// 将 person 设置为 obj 的原型
Object.setPrototypeOf(obj, person);

// 打印 obj 的原型
console.log(Object.getPrototypeOf(obj));

// 输出:{ name: 'Vincent', age: 56 }

// 检查 obj 的原型
// 是否等于 person 对象
console.log(Object.getPrototypeOf(obj) == person);

// 输出:true

在上述示例中,我们首先创建了一个空对象 obj 和一个非空对象 person。

然后,我们使用 setPrototypeOf() 方法将空对象的原型设置为 person 对象的原型。

当我们使用 getPrototypeOf() 方法打印 obj 的原型时,我们得到 person 对象作为输出。

因此,obj 的原型是 person 对象。

这在我们使用布尔表达式检查 obj 的原型是否与 person 对象相同时得到了证实,结果返回 true

// 布尔表达式返回 true
Object.getPrototypeOf(obj) == person;

示例 3:使用 getPrototypeOf() 查找字符串的原型

let str = "JavaScript";

// 查找字符串的原型
console.log(Object.getPrototypeOf(str));

// 输出:[String: ' ']

在上述示例中,我们调用 Object.getPrototypeOf() 来获取字符串 str 的原型。

输出表明 str 的原型是 String 构造函数。

示例 4:使用 getPrototypeOf() 查找函数的原型

// 定义一个问候的函数
function greet() {
console.log("Hello!");
}

// 获取上述函数的原型
console.log(Object.getPrototypeOf(greet));

// 输出:[Function]

在上述示例中,我们创建了一个 greet() 函数,当调用时打印 "Hello!"

使用 getPrototypeOf() 方法查找 greet() 函数的原型时,我们得到 [Function] 作为输出。

这个输出表明 greet() 的原型是 [Function] 构造函数。

推荐阅读: