为什么要new一下? function Odemo(name) { return this.name=name; } alert(Odemo('abc').name); //显示undefined alert(new Odemo('abc').name); //显示abc,为什么要new一下才有值?求指点。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 function Odemo(name) { return this.name=name; }你的这个方法是类里面的吧调用此方法要实例化类所以得用new,不new没对象不能调用方法啊如果单纯的一个函数就不用,不信你试试function Odemo(name){return 123;}alert(Odemo(1)); function Odemo(name) { return this.name=name; } alert(Odemo('abc').name); //显示undefined 此时,this指向的是window对象 alert(new Odemo('abc').name); //显示abc,为什么要new一下才有值?此时的this指向的是Odemo的实例 因为属性只有对象才有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”。 刚才说成PHP的了,你那个name必需得在内存里占个地方也是说是对象需要实例化也只是这个原因,你可以改成这样,说不定就能更理解一点var name2="123"; function Odemo(name) { return name2=name; } Odemo('abc'); alert(name);this->name是属于这个对象的,你未定义,那就得实例化,不然内存里不知怎么放 function Odemo(name) { return this.name=name; } var o = new Odemo('abc'); //等同 var o = {}; Odemo.call(o,"abc"); alert(o.name)应该差不多这样吧 js 遍历树求救…… JqPlot画图有点问题!! 求教各位高手,如何让定了长宽的img图片不拉伸变形? 熟悉Dojo的达人,前来围观,谢谢!! 新手问prototype 用 js 事项4 个select ( 国家 省份 市 区)的联动效果。 如何点击一个链接触发两个时间? 我写一个考试倒计时的JS函数。。。哪位高手能给代码。。。谢拉 怎样调用函数? 50分求救二个window.open()问题 在JS中<s:property value =""/>获取不到值 求大神帮助 急~~ javaweb 按照字母分类是如何实现的?
{
return this.name=name;
}
你的这个方法是类里面的吧
调用此方法要实例化类
所以得用new,不new没对象不能调用方法啊
如果单纯的一个函数就不用,不信你试试
function Odemo(name)
{
return 123;
}
alert(Odemo(1));
function Odemo(name)
{
return this.name=name;
}
alert(Odemo('abc').name); //显示undefined 此时,this指向的是window对象
alert(new Odemo('abc').name); //显示abc,为什么要new一下才有值?此时的this指向的是Odemo的实例
new 一下,函数就被解释成类,并返回实例
//Odemo('abc')的结果是this.name即window.name
alert(window.name.name)的结果当然是undefined
alert(new Odemo('abc').name);
//new Odemo('abc')的结果是返回Odemo的一个实例,而实例化时this指向的是实例的本身
所以实例.name 当然就是abc
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”。
也是说是对象需要实例化
也只是这个原因,你可以改成这样,说不定就能更理解一点
var name2="123";
function Odemo(name)
{
return name2=name;
}
Odemo('abc');
alert(name);
this->name是属于这个对象的,你未定义,那就得实例化,不然内存里不知怎么放
{
return this.name=name;
}
var o = new Odemo('abc');
//等同
var o = {};
Odemo.call(o,"abc");
alert(o.name)
应该差不多这样吧