在函数内设置类属性

时间:2018-11-09 05:56:14

标签: node.js

我知道如何在其中设置类属性:this.property = 1

但是如果它在函数内部,该怎么办? 示例:

class Test = {
    constructor(){
        var request = require('request');
        request(options, function(err, res, body){
            // Here I want to set Test property
            // Something like this.property = 1 or 
            // Test.property = 1
        }
    }
}

2 个答案:

答案 0 :(得分:3)

这是箭头函数的作用,它们在函数范围内提供词汇表。

request(options, (err, res, body) => {
    this.property = 1
})

此外,类构造函数中的副作用是一种反模式,尤其是异步的。

答案 1 :(得分:0)

“ this”是一个关键字。它指的是对象。 “ this.someProperty”表示相关对象的someProperty属性。

Test是类名。 Test.property是解决对象属性的错误方法。

如上所述,从函数内部寻址属性的正确方法是使用箭头函数。

class Test = {
  constructor(){
    var request = require('request');
    request(options, (err, res, body)=>{
        this.property = 1
    })
  }
}

var aTest = new Test();  // a Test object
var anotherTest = new Test(); // another Test object

// Change the property value of the objects
aTest.property = 5
anotherTest.property = 10