第二个不是匿名执行函数,
第一个是匿名函数(但是不建议这么做, 因为有可能会引起歧义), a到底是function还是num 实际上是一个num
第二个缺少函数名 报错
第三个才是匿名执行函数(推荐这样写)
主要原因是浏览器对js的解析方法, 如果你非要写类似于1这样的代码, 你就需要好好研究浏览器如何解析js的, 是从右向左还是从左向右, 还有好多好多判断
所以作为一个使用者, 我们要写标准的代码, 这种歧义性很大的代码万万写不得,
this关键字代指当前对象。未必仅指window
比如:
<body><form onsubmit="return checkform(this)">
<input type="text" name="txtbox" />
<input type="button" value="button" onclick="callme(this)"/>
<input type="submit" value="submit" name="btnsubmit"/>
</form>
</body>这里的this指当前的form。
在checkform函数中就可以这么写:
function checkform(form){if(formtxtboxvalue == ""){ alert("no data"); return false; }
}
在type="button"中,callme函数中的this,代表当前的button对象。
在javascript中写callme函数:
function callme(o){alert(ObjectprototypetoStringcall(o)); //结果显示:[object HTMLInputElement]
}
再试着运行这一段:
windowonload = function(){ callme(this); } //结果显示:[object Window],这里的this才是指window再试着运行这一段:
var m = {callme: function(){
alert(ObjectprototypetoStringcall(this));
}
};
windowonload = function(){ mcallme(this); } //结果显示:[object Object],这里的this是指对象m,
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)