CNode

nodejs通过字符串调用类里面的方法无法访问类中的公用属性,怎么解决?

问答
Zzy445566发布于10 年前最后回复10 年前2 回复4200 浏览0 收藏

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
yinxin630#1·10 年前

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

S
slclub#2·10 年前

t.test();

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

func();

搞清楚作用域

参与回复
登录后即可参与回复。登录