您的位置:首页 > Web前端 > JavaScript

JS中用new 创建对象及在构造函数中return的使用

2013-03-15 11:29 337 查看
核心提示: 创建具备特定类型的对象可以通过使用new关键字用构造函数模式来完成,function Emp(){this.name="Ray";}var p = new Emp();在这个过程中,JS中用new 创建对象及在构造函数中return的使用,相当于以Emp()为“模版”创建了

创建具备特定类型的对象可以通过使用new关键字用构造函数模式来完成。

function Emp(){

this.name="Ray";

}

var p = new Emp();

在这个过程中,相当于以Emp()为“模版”创建了一个新对象p,它具备Emp构造器中的成员变量和构造器原型。并且Emp将this设置为p

过程模拟:

var p = {};

Emp.apply(p);

p.__proto__=Emp.prototype;

用new声明的对象才能有Emp的属性。(通过this定义的)

例如 var q = Emp();

q === "undefined"

这是因为函数默认返回值是undefined,所以如果函数中没有return的话,则返回undefined.

在调用构造函数的过程中会经历以下4个步骤:

?

①创建一个新对象

②将构造函数的作用域赋给新对象(因此this指向这个新对象)

③执行构造函数中的代码(为这个新对象添加属性)

④返回新对象

接下来说说构造函数里包含return的情况

//构造函数在没有指定返回值的情况下,默认会返回新对象实例。

//如果指定的返回值是基本数据类型的话,仍然会返回新对象实例。

function A(){

this.x=3;

return "OK";

}

var a = new A();

a instanceof A === true;

"x" in a === true

如果指定返回对象了的话,被返回的对象就成了指定的对象值。在这种情况下,this值所引用的对象就被丢弃了。

function B(){

this.x=3;

return Object("OK");

}

var b = new B();

"x" in b === false

b instanceof B === false

b instanceof String === true
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐