我写 JS(嗯,EcmaScript),但相对很少。
在编写对象的成员函数时,我自然会经常多次使用其他成员变量和函数;但我倾向于避免定义自己的全局变量,同样重要的是,我努力避免与我定义的成员混淆全局变量。
鉴于这种情况,我对必须一直使用
this
感到恼火,例如:
this.memberA = this.methodB(someInputParam, this.memberC);
我真的只想说:
memberA = methodB(someInputParam, memberC);
并且首先在
memberA
范围内查找 methodB
、memberC
和 this
,然后在全局范围内查找。
这可以吗?
使用
this
在作用域方面有自己的好处,您可以声明任何参数和局部变量,并且它们不会与 this
' 属性发生冲突。否则你可以使用所谓的“硬物体”,我已经成功使用它们多年了:
function MyClass(){
Object.assign(this, {publicMethod, publicProp: 'public'});
let memberC = 2, memberA = null;
function methodB(someInputParam, param2){
return someInputParam + param2;
}
function publicMethod(){
memberA = methodB(2, memberC);
console.log(memberA);
}
}
const my = new MyClass;
my.publicMethod();