0

contextes6 クラス内で koa js ルート (this) と es6 クラスにアクセスするにはどうすればよいthisですか?

を使用してクラスプロパティにアクセスしようとすると、未定義this.nameになります

test.js

export default class {
  constructor (opts) {
    this.name = 'test'
  }

  welcome () {
    console.log(this.name) // 'this' is UNDEFINED. Trying to access class property. But getting undefined
    this.body = 'welcome '+this.params.name // 'this' works fine here as a koa reference
  }
}

app.js

import test from './test'
let Test = new test({})

router.get('/test/:name', Test.welcome)
4

1 に答える 1

-1

あなたが使用しているクラス宣言とエクスポート構文についてはよくわかりませんが、それが問題である可能性があると考えています。

このようなものが動作するはずです (このコードは require で動作しますが、 とまったく同じであることに注意してくださいimport):

test.js

class test{
    constructor(opts) {
        this.name = 'test';
    }

    welcome() {
        console.log(this.name); // 'this' is UNDEFINED. Trying to access class property. But getting undefined
        this.body = 'welcome ' + this.params.name; // 'this' works fine here as a koa reference
    }
}

module.exports = test;

app.js

let test = require('./test');
let Test = new test({});

Test.welcome();

このコードはthis.name完全に問題なく表示this.paramsされますが、別の場所で宣言したと思われる で壊れます。

于 2016-10-18T22:58:03.320 に答える