注入函数中的 JavaScript 范围
Javascript Scope in Injected Function
(function(){
var privateSomething = "Boom!";
var fn = function(){}
fn.addFunc = function(obj) {
alert('Yeah i can do this: '+privateSomething);
for(var i in obj) fn[i] = obj[i];
}
window.fn=fn;
})();
fn.addFunc({
whereAmI:function()
{
alert('Nope I''ll get an error here: '+privateSomething);
}
});
fn.whereAmI();
为什么 whereAmI(( 无法访问 privateSomething? 以及如何将 whereAmI(( 放在与 addFunc(( 相同的上下文中?
Javascript 是词法范围的:名称是指基于定义名称的位置而不是使用名称的位置的变量。 privateSomething
在whereAmI
中被查找为局部,然后在全局范围内。 在这两个地方都找不到它。
JavaScript 具有词法作用域,而不是动态作用域(除了 this
(。参见 http://en.wikipedia.org/wiki/Scope_(computer_science(#Lexical_scoping_and_dynamic_scoping
相关文章:
- 获取给定JavaScript范围内的解析函数
- 生成时间戳日期|Javascript范围内的空数据
- 注入函数中的 JavaScript 范围
- 可能存在Javascript范围问题
- JavaScript范围说明
- 如何获取整个 JavaScript 范围内上次单击的事件数据
- 下面的 JavaScript 范围是如何工作的
- 关于 JavaScript 范围的澄清
- JavaScript 范围和执行上下文
- Javascript 范围和此关键字的使用
- 变量和框架的 JavaScript 范围
- 使用此标识符的函数的 JavaScript 范围规则
- Javascript 范围:为什么 foo 返回未定义
- Javascript - 范围问题 - 有很好的Javascript答案
- JavaScript 范围和全局变量
- Javascript范围在角度SPA应用程序中不起作用
- KineticJS - 基本的JavaScript范围问题
- 我的JavaScript范围有什么问题
- 尝试块中的 JavaScript 范围
- JavaScript 范围/代码迭代不同步