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]
构造函数。
推荐阅读: