Javascript 我怎么写';这';少一点?

Javascript 我怎么写';这';少一点?,javascript,Javascript,使用ES6类非常好,但我发现自己到处都在使用这个.variable,它总是指我的类。有没有办法让类中的隐含全局变量改为this.variable?所以,如果我写“width”,它将默认为this.width,而不是一个隐含的全局值 或者,如果有一些我可能不知道的最佳实践来减少我的“这种”上瘾,我也很想读一下。在我目前正在处理的文件中,这个关键字的数量大约是代码行的一半…使用构造函数/类,而这个只是使用JavaScript的一种方法。JavaScript是一种多范式语言,是的,完全可以在不使用th

使用ES6类非常好,但我发现自己到处都在使用这个.variable,它总是指我的类。有没有办法让类中的隐含全局变量改为this.variable?所以,如果我写“width”,它将默认为this.width,而不是一个隐含的全局值


或者,如果有一些我可能不知道的最佳实践来减少我的“这种”上瘾,我也很想读一下。在我目前正在处理的文件中,这个关键字的数量大约是代码行的一半…

使用构造函数/类,而
这个
只是使用JavaScript的一种方法。JavaScript是一种多范式语言,是的,完全可以在不使用
this
的情况下大量使用它。一种方法是通过闭包

考虑这个
示例:

班级人员{
构造函数(第一个,最后一个){
this.first=first;
this.last=last;
this.things=[];
}
你好{
log(`Hi,我是${this.first}${this.last}`);
}
抓东西{
这个。东西。推(东西);
}
}
const p1=新人(“乔”、“博客”);
p1.说你好();
p1.抢夺(“东西1”);
log(p1.first+“'s things:”+p1.things.join(“,”);
const p2=新人(“Suresh”、“Kumar”);
p2.说你好();
p2.抢夺(“东西2”);
p2.抢夺(“东西3”);

log(p2.first+“'s things:+p2.things.join(“,”))使用构造函数/类和
这只是使用JavaScript的一种方法。JavaScript是一种多范式语言,是的,完全可以在不使用
this
的情况下大量使用它。一种方法是通过闭包

考虑这个
示例:

班级人员{
构造函数(第一个,最后一个){
this.first=first;
this.last=last;
this.things=[];
}
你好{
log(`Hi,我是${this.first}${this.last}`);
}
抓东西{
这个。东西。推(东西);
}
}
const p1=新人(“乔”、“博客”);
p1.说你好();
p1.抢夺(“东西1”);
log(p1.first+“'s things:”+p1.things.join(“,”);
const p2=新人(“Suresh”、“Kumar”);
p2.说你好();
p2.抢夺(“东西2”);
p2.抢夺(“东西3”);

log(p2.first+“'s things:+p2.things.join(“,”))我知道这不是推荐的做法,但OP要求的是一个声明

with
允许解析对象,将属性用作语句中的变量:

var MyClass=/**@class*/(函数(){
函数MyClass(名称、年龄){
this.name=名称;
这个。年龄=年龄;
}
MyClass.prototype.whoami=函数(){
(这个){
console.log(姓名、年龄);
}
};
返回MyClass;
}());
var c=新的MyClass(“bob”,123);

c、 whoami()我知道这不是推荐的做法,但OP要求的是一个声明

with
允许解析对象,将属性用作语句中的变量:

var MyClass=/**@class*/(函数(){
函数MyClass(名称、年龄){
this.name=名称;
这个。年龄=年龄;
}
MyClass.prototype.whoami=函数(){
(这个){
console.log(姓名、年龄);
}
};
返回MyClass;
}());
var c=新的MyClass(“bob”,123);

c、 whoami()回顾这个老问题,答案随着钩子的释放而变得显而易见,只是不要编写类组件和函数组件:)

回顾这个老问题,答案随着钩子的释放而变得显而易见,只是不要编写类组件和函数组件:)

这很好!使用
意味着您使用了适当的封装。这里没有什么可以摆脱的。如果你不喜欢它,那就意味着你不喜欢OOP。你们可以看看其他语言。@JeBokE我知道,但我想让window成为我的类。如果我能以某种方式将“隐式全局”设置为“隐式类变量”,我就能使我的代码更短、更漂亮;-;我猜你是来自其中一种语言,在那里使用这个是可选的(颤抖)。在我看来,如果在可选语言中不使用此选项,那么当您同时使用必须使用此选项的语言时,尤其是在不存在变量的情况下,如果您还使用动态创建变量的语言时,阅读代码会更加困难。@rypskar我来自Java,如果Int someNumber=1,在我的类中的其他地方,我写someNumber,它将假定我的意思是this.someNumber,除非在方法
中有一个更局部的someNumber,比如参数,这是好的!使用
意味着您使用了适当的封装。这里没有什么可以摆脱的。如果你不喜欢它,那就意味着你不喜欢OOP。你们可以看看其他语言。@JeBokE我知道,但我想让window成为我的类。如果我能以某种方式将“隐式全局”设置为“隐式类变量”,我就能使我的代码更短、更漂亮;-;我猜你是来自其中一种语言,在那里使用这个是可选的(颤抖)。在我看来,如果在可选语言中不使用此选项,那么当您同时使用必须使用此选项的语言时,尤其是在不存在变量的情况下,如果您还使用动态创建变量的语言时,阅读代码会更加困难。@rypskar我来自Java,如果Int someNumber=1,在我的类中的其他地方,我写someNumber,它会假设我是这个意思。someNumber,除非方法中有一个更局部的someNumber,比如参数谢谢你的贡献,但它并不能真正解决我的问题,我知道我想使用类,但我只是希望有一种方法来暗示这一点,而不是在一个600行的文件中写300次。但从其他的回答来看,我想这是不可能的:\@OdinThorsen:嗯,这种模式将是你提到的替代做法之一。