NOOB自定义模块事件

时间:2016-12-06 05:10:34

标签: javascript node.js

我正在学习节点并创建了一个自定义模块。

我的自定义模块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;

2 个答案:

答案 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();

enter image description here