本文介绍在JavaScript中获取对象原型对象的两种常用方法。首先介绍直接使用__proto__属性,该方法在Chrome和Firefox中有效,但IE浏览器直到IE11才支持。其次介绍通过constructor属性间接获取原型的方法,适用于不支持__proto__的环境。文章提供了具体的代码示例和原理说明。
JavaScript获取原型对象的方法
在JavaScript中,若需获取一个未知构造函数的对象的原型,有哪些可行方案?
使用__proto__属性
在Chrome或Firefox等现代浏览器中,可直接利用对象的__proto__属性来访问其原型对象。
具体实现代码如下:
<!-- lang: js -->
function F(){};
var foo = new F();
alert(foo.__proto__ == F.prototype);
需要注意的是,__proto__属性在IE浏览器中直至IE11版本才获得支持。
使用constructor属性
针对不支持__proto__属性的浏览器环境,可通过constructor属性间接获取原型对象。
相关代码示例如下:
<!-- lang: js -->
function F(){};
var foo = new F();
alert(foo.constructor.prototype == F.prototype);
constructor并非对象自身的属性,而是沿原型链向上查找所得。该属性指向原型对象对应的构造函数,而构造函数的prototype属性指向原型对象,从而实现了原型的间接获取。
以上内容总结了JavaScript中获取原型对象的主要方法。