发表时间:2007-10-25
lonelyblue 写道 var man =(function(){ var name = "bluethinking"; var getName = function(name){ this.name = name; //getName函数作用域内(内部变量)的name变量 return name; }(name); return getName; })(); alert(man.__parent__.name); //man.__parent__获得getName函数的[[Scope]]即作用域 输出:bluethinking hax 写道 一个函数上的__parent__属性可以获得其[[Scope]],可以通过其遍历到所有内部变量的。 谁能解释一下 以下两个疑惑 一 var man=(function....) 第一个括号把function括起来是干什么用的 有什么特殊意义吗?在一些代码里经常看到这样的写法。 二 function{...}(name);中name是什么意思,难道是立即执行将name参数传递给函数?,但从后面的调用alert(man._parent_.name),并未传递得有参数啊? |
|
发表时间:2007-10-25
求职当js讨论了,可惜楼上上的理解错误了,看一下你的代码man在定义时候,内部自动执行的function的this是window吧,你直接就把name弄window上了,再者,gecko的__parent__是不等于Rhino的真正的scope chain的__parent__的,gecko下
Math.sin.__parent__==Math; (function(){}).__parent__==window; (function test(){function inner(){} alert(inner.__parent__==null)})() 当然我的问题其实是考察scope chain,也考察下对于Rhino的认识以及gecko的区别,gecko下的__parent__不是scope chain,很可能是某种host定义方法的默认宿主之类的含义 |
|
发表时间:2007-10-25
var man =(function(){ var name = "bluethinking"; var getName = function(name){ window.age = "XX";//window下的age this.name = name; //window作用域(错误的理解:getName函数作用域内(内部变量)的name) var gender = "M"; //getName函数作用域内的gender return name; }(name); return getName; })(); alert(man.__parent__.name); //输出:bluethinking alert(man.__parent__.age); //输出:XX alert(man.__parent__.gender); //输出:undefined 因为man.__parent__是window作用域 //而不是getName函数的作用域 谢谢楼上的纠正我的错误认识。 |
|
发表时间:2007-11-11
是mofile吗?
|