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执行,我发现是构造函数才和原代码是一致的。所以第一反应是否这本书出错了?但是我想经得起考究的书不应该错,那可能是我错了,那么想请各位大神帮我解决下这本书这个形容是否有问题。
添加回答
举报
0/150
提交
取消