英文:
how to assign parameter passed to constructor to local private variable with the same name
问题
代码中的问题似乎很基础,但我对JavaScript和Vue.js都很新手。如下所示,我正在创建一个扩展了MapBuilder
的类DigitizePolygonInteractions
,构造函数接受两个参数moduleName
和mapInstance
。
我想将传递给构造函数的参数mapInstance
分配给一个名为mapInstance
的本地私有变量。至于下面的代码,当添加以下代码行时,Visual Studio Code不会突出显示let mapInstance
,这表明this.mapInstance
未被使用。
在Java中,给定下面的代码,对于语句this.mapInstance = mapInstance
,this.mapInstance
指的是let mapInstance
,而mapInstance
指的是传递给构造函数的mapInstance
。
请问如何在JavaScript中实现相同的效果?
代码:
let instance;
let mapInstance //<==应该是本地私有变量
export class DigitizePolygonInteractions extends MapBuilder {
/**
* @param { string } moduleName like 'map-sen2bee'
*/
constructor(moduleName, mapInstance) {
super(moduleName);
instance = this;
this.mapInstance = mapInstance; //<==============在这里
}
希望这可以帮助您理解代码。如果您有任何进一步的问题,请随时提出。
英文:
the question seems very primitive but i am new to javascript and vuejs. as shown in the code posted below,i am creating a class DigitizePolygonInteractions
that extends MapBuilder
. the constructor receives two parameters moduleName
and mapInstance
.
i want to assign the parameter mapInstance
that is passed to the constructor to a local private variable named mapInstance
as well. as for the code posted below, visual-studio codes does not highlight the let mapInstance
when the following line of code
is added this.mapInstance = mapInstance
, which indicates that this.mapInstance
is not used.
in java, given the code posted below, for the statement this.mapInstance = mapInstance
, this.mapInstance
refers to let mapInstance
while mapInstance
refers to mapInstance
that is passed to the constructor
how can i achieve the same in javascript please
code:
let instance;
let mapInstance //<==should be the local private variable
export class DigitizePolygonInteractions extends MapBuilder {
/**
* @param { string } moduleName like 'map-sen2bee'
*/
constructor(moduleName,mapInstance) {
super(moduleName);
instance = this
this.mapInstance = mapInstance //<==============here
}
答案1
得分: 1
let instance;
let mapInstance;
export class DigitizePolygonInteractions extends MapBuilder {
constructor(moduleName, _mapInstance) {
super(moduleName);
instance = this;
mapInstance = _mapInstance;
}
}
export class DigitizePolygonInteractions extends MapBuilder {
constructor(moduleName, mapInstance) {
super(moduleName);
this.instance = this;
this.mapInstance = mapInstance;
}
}
英文:
let instance;
let mapInstance;
export class DigitizePolygonInteractions extends MapBuilder {
constructor(moduleName, _mapInstance) {
super(moduleName);
instance = this;
mapInstance = _mapInstance;
}
}
However, a better approach would be:
export class DigitizePolygonInteractions extends MapBuilder {
constructor(moduleName, mapInstance) {
super(moduleName);
this.instance = this;
this.mapInstance = mapInstance;
}
}
答案2
得分: 1
let instance;
let mapInstance; // 此变量将作用域限定在文件或模块中。
export class DigitizePolygonInteractions extends MapBuilder {
/**
* @param { string } moduleName 例如 'map-sen2bee'
*/
constructor(moduleName, _mapInstance) {
super(moduleName);
instance = this;
this.mapInstance = _mapInstance; // this.mapInstance 是此类将生成的对象的属性。
mapInstance = _mapInstance; // mapInstance 是存在于此类外部的变量。基本上与此类无关。
}
}
let name;
class Person {
constructor(_name, age) {
// 'this' 这里指的是当此类被实例化时将要创建的对象(参见下面)
this.name = _name;
name = _name;
this.age = age;
}
}
const boy1 = new Person('jack', 21);
console.log(boy1) // {name: 'jack', age: 21}
console.log(name) // jack
英文:
let instance;
let mapInstance // this variable will be scoped to the file or module.
export class DigitizePolygonInteractions extends MapBuilder {
/**
* @param { string } moduleName like 'map-sen2bee'
*/
constructor(moduleName, _mapInstance) {
super(moduleName);
instance = this
this.mapInstance = _mapInstance; // this.mapInstance is a property on the object that this class will generate.
mapInstance = _mapInstance; // mapInstance is a variable that exists outside this class. Basically it has nothing to do with this class.
}
I haven't worked with classes that much, but I can try to explain it with a very simple example below;
let name;
class Person{
constructor(_name, age){
// 'this' here refers to the object that will be created when this class is instantiated (see below)
this.name = _name;
name = _name;
this.age = age;
}
}
const boy1 = new Person('jack', 21);
console.log(boy1) // {name: 'jack', age: 21}
console.log(name) // jack
答案3
得分: 0
根据我所知,变量必须在类本身的上下文中才能通过this
访问它们。不幸的是,我正在使用TypeScript而不是纯JavaScript,但在TypeScript中的一个工作示例如下:
let instance;
export class DigitizePolygonInteractions extends MapBuilder {
private mapInstance: [Type] = {}; //<== 这是类的一个本地私有变量,可以通过'this'访问它
constructor(moduleName, mapInstance) {
super(moduleName);
instance = this
this.mapInstance = mapInstance
...
英文:
As far as I know, the variables must be in the context of the class itself in order to access them via this
. Unfortunately I am using typescript instead of pure javascript, but a working example in typescript would be:
let instance;
export class DigitizePolygonInteractions extends MapBuilder {
private mapInstance: [Type] = {}; //<== is a local private variable of the class now and can be accessed via 'this'
constructor(moduleName,mapInstance) {
super(moduleName);
instance = this
this.mapInstance = mapInstance
...
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论