我正在学习节点并创建了一个自定义模块。
我的自定义模块simple使用单个方法定义一个类。
我希望能够从定义的类对象中调用此方法一次。
我还希望能够从这个类方法中引用我的主代码中的变量。
在“open”方法中,我有两个console.log命令。第二个产生错误“ReferenceError:thisVar未定义”。如果我注释掉第2个console.log,则会打印与“打开”错误相关的内容。
如何从类方法中引用thisVar?
EDIT1 我从回答中了解到“thisVar”超出了课程范围,因此无法使用。在这种情况下,为什么“theVar”工作,因为它也在课外定义?范围是相对于模块而不是类?
这是我的主要js代码:
"use strict";
const Door = require('door');
const mydoor = new Door("green");
var thisVar = 1;
console.log(mydoor.colour);
mydoor.open();
这是我的“门”模块:
"use strict";
var thatVar = 2;
class Door {
constructor(colour) {
this.colour = colour;
}
open() {
console.log("open");
//console.log(thisVar);
console.log(thatVar);
}
}
module.exports = Door;
答案 0 :(得分:1)
thisVar
不在door
模块的范围内。 Door
以某种方式需要访问thisVar
,所以我会传递给构造函数。
class Door {
constructor(colour, thisVar) {
this.colour = colour;
this.thisVar = thisVar;
}
open() {
console.log('open');
console.log(thisVar);
}
}
module.exports = Door;
主要的js:
const door = require('door');
const myDorr = new Door('green', 1);
答案 1 :(得分:1)
<强> Door.js 强>
// Door.js
'use strict';
module.exports = class Door {
constructor(colour) {
this.colour = colour;
}
open(ThisVar) {
console.log("open");
if(ThisVar)
console.log(ThisVar);
}
}
<强> main.js 强>
'use strict';
var Door = require('./Door.js');
var someone = new Door("pink");
var a=7;
someone.open(a);
someone.open();