这要从对象,实例和原型三者关系说起,
如果学过面向对象的语言或者知道面向对象,那么一个对象可以创建一个实例,这应该没有问题,这是前提,现在开始说重点。
首先js中对象(函数(function)也是对象),可以访问到原型(prototype),
然后通过对象得到的原型(prototype)中也会有一个给对象的指针(即constructor)
例如 :
function Person(){};
var pro = Person.prototype;//得到对象的原型
var obj = pro.constructor ; // 这样可以得到Person对象。
对象创建对象的实例就不多说了
var p = new Person(); // 创建一个对象实例 。
对象实例中也会隐含的包含一个指向prototype的指针(在safrai ,firefox,chrome,opera等浏览器中可以使用 '__proto__'来访问)
例如:
var p2 = new Person();
var proro = p2.__proto__ ;// 可以得到对象原型(prototype)的引用 ,
var bool = p2.__proto__ == Person.prototype;
alert(bool); // true 对象的原型和实例获取的原型是同一个对象,
总结:
对象和实例都可以访问到原型
对象:Person.prototype;
实例:p.__proto__ ;
原型可以访问到对象
Person.prototype.constructor;
则实例也可以访问到对象
p.__proto__.constructor ;
转载于:https://www.cnblogs.com/hippohouse/archive/2012/12/27/2835362.html