创建具备特定类型的对象可以通过使用new关键字用构造函数模式来完成。
function ClassA(){ this.name=" ClassA "; } var p = new ClassA ();
在这个过程中,相当于以ClassA ()为“模版”创建了一个新对象p,它具备ClassA构造器中的成员变量和构造器原型。并且ClassA将this设置为p。
过程模拟:
var p = {}; ClassA.apply(p); p.__proto__= ClassA.prototype;
在调用构造函数的过程中会经历以下4个步骤:
接下来说说构造函数里包含return的情况
构造函数在没有指定返回值的情况下,默认会返回新对象实例。
如果指定的返回值是基本数据类型的话,仍然会返回新对象实例。
function A(){ this.x=3; return "OK"; } var a = new A(); alert(a instanceof A )// true; alert("x" in a )// true
如果指定返回对象了的话,被返回的对象就成了指定的对象值。
在这种情况下,this值所引用的对象就被丢弃了。
function B(){ this.x=3; return Object("OK"); } var b = new B(); alert("x" in b )//false alert(b instanceof B )//false alert(b instanceof String )//true