nodejs通过字符串调用类里面的方法无法访问类中的公用属性,怎么解决?
发布于 7 年前 作者 zy445566 3520 次浏览 来自 问答

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 回复

很正确啊,this作用域问题。t.test() 和 t[‘test’] () 的this都是指向t。func()的this指向全局对象。 详情去看《你不知道的javascript》作用域那部分

t.test();

//这里可以取出test方法 var func = t[‘test’].apply(t, args);

func();

搞清楚作用域

回到顶部