setTimeout()的第一个参数可以作为字符串传入。字符串会在指定的超时时间或间隔之后进行求值(相当于eval)。
其中相当于eval这种描述正确吗?
我们先看一个例子
var name = "Bob"; var nameObj ={ name : "Tom", showName : function(){ alert(this.name); }, waitShowName : function(){ var that = this; setTimeout("that.showName();", 1000); } }; nameObj.waitShowName();
然后与下面两个进行对比
var name = "Bob"; var nameObj ={ name : "Tom", showName : function(){ alert(this.name); }, waitShowName : function(){ var that = this; eval("console.log(that)"); } }; nameObj.waitShowName();
var name = "Bob"; var nameObj ={ name : "Tom", showName : function(){ alert(this.name); }, waitShowName : function(){ var that = this; (new Function("console.log(that)"))() } }; nameObj.waitShowName();
想必大家应该很清楚我的意思了,eval执行和new Function执行,我发现是构造函数才和原代码是一致的。所以第一反应是否这本书出错了?但是我想经得起考究的书不应该错,那可能是我错了,那么想请各位大神帮我解决下这本书这个形容是否有问题。
幻_影
风萧萧梦潇潇
幻_影
Mery丶Louis
相关分类