class Test{ constructor(hello) { this.hello = hello; }
test() { console.log(this.hello); } }
var t = new Test('World'); //这里会输出World t.test();
//这里可以取出test方法 var func = t['test']; //这里会输出Cannot read property 'hello' of undefined func();
我曾经尝试这样赋值,但还是行不通,但我又要通过字符串调取方法怎么解决? //------------行不通的方法------------------- func.hello = t.hello; func(); //------------行不通的方法------------------- //----------------诡异的是这样却可行,求解为何---------------------------------- t['test'] (); //-----------------诡异的是这样却可行,求解为何---------------------------------
这里必须使用6.9.1+以上的nodejs版本
回复 (2)
Y
很正确啊,this作用域问题。t.test() 和 t['test'] () 的this都是指向t。func()的this指向全局对象。 详情去看《你不知道的javascript》作用域那部分
S
t.test();
//这里可以取出test方法 var func = t[‘test’].apply(t, args);
func();
搞清楚作用域
参与回复
登录后即可参与回复。登录