js哪些方法可以获取原型?
在JavaScript中,有几种方法可以获取对象的原型:
Object.getPrototypeOf(obj)
: 这是获取对象原型最标准、最常用的方法。它返回指定对象的原型(即,内部[[Prototype]]
属性的值)。
let obj = {};
let proto = Object.getPrototypeOf(obj);
console.log(proto === Object.prototype); // true
obj.__proto__
: 这是一个非标准的属性,但在大多数现代浏览器中都可以使用。它直接提供了对对象原型的访问。尽管它在实践中被广泛使用,但不建议在生产代码中使用它,因为它不是ECMAScript规范的一部分。
let obj = {};
let proto = obj.__proto__;
console.log(proto === Object.prototype); // true
constructor.prototype
: 如果对象是通过构造函数创建的,并且构造函数没有被修改过,那么可以通过构造函数的prototype
属性来获取原型。但请注意,如果构造函数的prototype
属性被替换为一个新的对象,那么这种方法将不再有效。
function MyConstructor() {}
let obj = new MyConstructor();
let proto = MyConstructor.prototype;
console.log(Object.getPrototypeOf(obj) === proto); // true
在大多数情况下,推荐使用Object.getPrototypeOf()
方法,因为它是ECMAScript规范的一部分,并且在所有现代JavaScript环境中都受支持。