|
精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (3)
|
|
|---|---|
| 作者 | 正文 |
|
时间:2008-07-02
eval的第二参数介绍写的是context就是with差不多的功能,http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Functions:eval也说with可以代替第二参数,就是说
var ttt={
aaa:123,
bbb:234
}
with(ttt)
{
ccc=aaa;
}
//eval("ccc=aaa",ttt)
alert(ccc)
和 var ttt={
aaa:123,
bbb:234
}
eval("ccc=aaa",ttt)
alert(ccc)
是一样的,但是下面 var a=(function(){
var aaa=123;
var bbb=456;
return {
fn:function(){aaa}
}
})()
/*
with(a.fn)
{
ccc=bbb;
}
*/
eval("ccc=bbb",a.fn)
alert(ccc)和
var a=(function(){
var aaa=123;
var bbb=456;
return {
fn:function(){aaa}
}
})()
with(a.fn)
{
ccc=bbb;
}
//eval("ccc=bbb",a.fn)
alert(ccc)却是不同的,具体原因归结于mozilla对于function默认执行aaa自己变量返回的特有对于eval产生scope当作context特殊对象有关
声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
时间:2008-07-02
先搞明白scope跟context是什么意思再说话行不
scope还能当作context我还是第一次听说 |
|
| 返回顶楼 | |
|
时间:2008-07-02
我也是头一会听说,所以发上来
|
|
| 返回顶楼 | |
|
时间:2008-07-02
引用 function默认执行aaa自己变量返回的特有对于eval产生scope当作context特殊对象有关
无语了 这句话是MOZ说的? |
|
| 返回顶楼 | |
|
时间:2008-07-02
MOZ在打开ScopeChain优化的情况下设计这个参数实在是愚蠢
|
|
| 返回顶楼 | |
|
时间:2008-07-02
楼上说的话比mozilla的话还更加难以理解
|
|
| 返回顶楼 | |
|
时间:2008-07-02
这个你应该也发现了 只是你没法解释而已
简单地说 你为啥要在函数里面加aaa fn:function(){aaa} |
|
| 返回顶楼 | |
|
时间:2008-07-02
看"具体原因归结于mozilla对于function默认执行aaa自己变量返回的特有对于eval产生scope当作context特殊对象有关 "
|
|
| 返回顶楼 | |
|
时间:2008-07-02
再补充一个
(function(){
var _eval = eval;
eval = function(str){
_eval(str);
}
})()
var obj = (function() {
var a = 21;
return {
fn: function() {a;}
};
})();
var foo;
eval(’foo=a’, obj.fn);
alert(foo);
|
|
| 返回顶楼 | |
|
时间:2008-07-02
mozilla对于function默认执行aaa自己变量返回的特有对于eval产生scope当作context特殊对象有关
这句话对于新手等于"这是一个很nb的东西 说了你也听不懂" 对于老手等于"我不懂JavaScript,甚至连Context是什么都不知道" haha 不说了不说了 你继续 |
|
| 返回顶楼 | |




