在本篇文章中,部分内容引用自《JAVASCRIPT 权威指南》一书。
首先,js中的一切都为对象,而除了OBJECT.PROTOTYPE外的任何对象都具有prototype属性。
所有通过对象直接量创建的对象,具有同一个prototype属性——object.prototype。
所有通过new创建的对象,其prototype属性被赋值为构造函数所对应的prototype。
在本人理解来看,除了值为object.prototype外的所有prototype,都可以说明对象所属的类。
如:
function User(name){
this.name=name;
}//此处为对构造函数的定义
var me=new User("my name");//此处便是通过构造函数初始化对象me。me.prototype=User.prototype,此时me.constructor==User为true(constructor为prototype所指对象具有的一个属性,该属性指向prototype所对应的构造函数,通过该属性,可以判别对象属于哪类。)
当我们不同过对象的实例化,而是直接调用构造函数时,如:
User("TEST");
则此时默认是通过对象对window对象来调用构造函数进行实例化,此时window.prototype=User.prototype,window.constructor==User为true。