为什么要new一下?
JScript code
function Odemo(name)
{
return this.name=name;
}
alert(Odemo('abc').name); //显示undefined
alert(new Odemo('abc').name); //显示abc,为什么要new一下才有值?
求指点。。。。。。。
------解决方案--------------------因为里面有个return 所以
alert(Odemo('abc').name);
//Odemo('abc')的结果是this.name即window.name
alert(window.name.name)的结果当然是undefined
alert(new Odemo('abc').name);
//new Odemo('abc')的结果是返回Odemo的一个实例,而实例化时this指向的是实例的本身
所以实例.name 当然就是abc
------解决方案--------------------1、new运算把构造函数的数据类型由Function转换为Object,并捆绑构造函数内部的this指针指定到Object上。
2、alert(Odemo('abc').name);过程,Odemo是一个全局函数调用,返回的内部this指向全局对象window,this.name相当于window.name,而window没有定义name属性,所以SHOW “undefined”。
3、alert(new Odemo('abc').name);过程,通过new运算,JS把this指针绑定到了该函数所构造出来的对象上,当然SHOW “abc”。