var Person = function (name ){ this.name = name; } //必须这种 var p = new Person('aaron') //这个有问题 Person('aaron') /** * 1 .函数调用返回时undefinde ,执行上下文是window * 2. new 构造,执行上下文从全局对象变成一个空的上下文,这个上下文代表新生的实列 * 因此this关键字指向当前的实例 * * 3. 默认情况下,构造函数没有返回,默认返回this,否则返回任意非原始的类型值 * * **/ var Class = function(){ var klass = function(){ this.init.apply(this,arguments); } klass.prototype.init = function(){ } return klass; } //返回一个构造器 var Person = new Class; Person.prototype.init = function (){ } //new 一个包装后的构造器 var Person = new Person;