Javascript/Typescript -> Access 函数的先前作用域
Javascript/Typescript -> Access Previous scope of a function
是否可以在Javascript中访问函数的先前作用域?或者是否可以在调用函数时自动将"this"分配给打字稿中的参数?(所以我有以前的范围)
例如:(在我的类可查询中定义的函数)
Where(filter: (part: T) => boolean): Queryable<T> {
var ast = acorn.parse("(" + filter.toString() + ")"); ...
我从外面使用它:
var aa = new Queryable<ITest>();
var jj = "bb";
aa.Where(x => x.content == "aa" && x.bb.content == jj || x.form.Contains("Hallo"));
现在在我的 Where 函数中,我需要获取"jj"的值
Mabey 多一点代码帮助:
class Queryable<T> {
Where(filter: (part: T) => boolean): IQueryable<T> {
var ast = acorn.parse("(" + filter.toString() + ")");
return null;
}
}
interface String {
Contains(par: String): boolean;
StartsWith(par: String): boolean;
EndsWith(par: String): boolean;
}
interface ITest {
content: string;
form: string;
href: string;
bb: ITest;
cc: ITest[];
}
function test() {
var aa = new Queryable<ITest>();
var jj = "bb";
aa.Where(x => x.content == "aa" && x.bb.content == jj || x.form.Contains("Hallo"));
}
test();
在"位置"中,我需要访问变量,这些变量在他的参数中的函数中使用
我认为除了
其全局范围的情况外,无法访问"以前的"范围(在此处查看更多内容)。即使它可能并且您可以获得对"this"的引用,它也不允许您访问变量。
我建议重新设计您的方法并使用变量 - 具有旨在保存所有必需信息的属性的类的对象。然后,您将能够传递此类父对象的实例以及函数调用,并根据需要访问其属性。
大致是这样的:
class Queryable<T>
{
public Where(parent: any, filter: (part: T) => boolean): IQueryable<T>
{
var jj = parent.jj;
var ast = acorn.parse("(" + filter.toString() + ")");
return null;
}
}
class Test
{
public jj;
public Run()
{
this.jj = "bb";
let aa = new Queryable<ITest>();
aa.Where(this, x => x.content == "aa" && x.bb.content == this.jj || x.form.Contains("Hallo"));
}
}
相关文章:
- Javascript中的内部函数作用域
- 将对象作为参数传递时的 Javascript 函数作用域
- Javascript 函数作用域概念
- 函数作用域 if 语句
- Javascript 函数作用域
- 评估和函数作用域
- 有没有办法迭代函数作用域内的公共方法
- Javascript 函数作用域差异
- 嵌套函数作用域变量
- JavaScript 对象中的变量和函数作用域
- Javascript 函数作用域和查找父对象的属性
- 脚本标记之间的 JavaScript 函数作用域
- 纯JavaScript onclick在分配函数作用域结束后变为未定义
- 具有闭包函数作用域的意外行为
- KnockoutJS:函数作用域错误
- 具有所选函数作用域的变量
- 使用 JSON 对 js 对象进行分级/解析时,返回的方法中的函数作用域会丢失
- Angular的watch - update变量在函数作用域之外
- 将变量传递到函数作用域
- 为什么条件块中的函数声明在Chrome中提升到函数作用域,而在Firefox中不是?