访问“父范围”
Accessing "Parent Scope"
免责声明: 我不确定我是否使用了正确的术语。
给定此代码:
var sample = 'Text';
var test = function(sample) {
console.log(sample);
};
test('Text Too');
我知道如果函数参数具有不同的名称,则console.log()
调用将输出"文本"。有没有办法让test()
函数引用"父范围"变量,sample
而不更改函数参数的名称?如果是这样,如何?
不,在 JavaScript 中没有办法做到这一点。如果在内部作用域中使用相同的变量名称,则该内部作用域将完全无法访问外部作用域变量。
编辑:当然,外部作用域是全局作用域时除外。然后你可以使用 window.sample
.
@plbsam是对的,他不应该删除他的答案。
在您的特定情况下,函数内部的this
是调用它的上下文:文档
var sample = 'Global var';
var test = function(sample) {
console.log("sample: "+sample);
console.log("this.sample: "+this.sample);
};
test('Local var');
<小时 />编辑:
由于这一切都取决于调用函数的作用域,因此您始终可以将this
分配给全局作用域中的单独 var,以便能够在任何地方访问它:
// this var can now be accessed inside any function as a reference to the global scope.
global = this;
var sample = 'Global';
var test = function(abc) {
console.log("sample: "+sample);
console.log("this.sample: "+this.sample);
console.log("global.sample: "+global.sample);
};
test('Local');
相关文章:
- AngularJS绑定没有'在没有填充父范围的情况下无法工作
- 在 Angular 指令中,如何进行回调,其中函数名称位于父范围的变量中
- 如何从ng重复单个范围更改父范围 - Angular JS
- 淘汰赛:can't从嵌套foreach访问父级范围的属性
- 如何延迟子指令的编译阶段,因为父指令的范围具有它所需的所有数据
- 无法访问父范围内的属性,但是我可以通过该属性链查看
- 如何从父指令/控制器访问指令范围
- 从父控制器传递工厂数据以隔离范围指令
- Angularjs 自定义指令 scope:true 更改它的父范围
- 按钮变量范围 - 如何更新父范围中的变量?jQuery.
- Angularjs 绑定 2 指令将模型范围限定为父控制器模型
- 在角度中使用父范围变量.js
- Javascript获取与父元素相比的范围
- 用于访问父范围的控制器层次结构异常:AngularJS
- 角度指令父范围和子范围通信
- 如何访问父控制器中的 FormController 或 AngularJS 中的范围
- 指令范围重写父值
- AngularJS 父指令范围来自内部 ng-transclude
- 使用嵌入隐藏内部元素的父范围的指令范围
- 当范围不包含任何内容时隐藏父项