我们为什么要在函数内执行this.xyz

时间:2018-09-04 07:31:09

标签: javascript reactjs

我试图了解为什么我们要在函数内执行this.xyz?

像考虑使用foo()一样调用此函数

function foo() {
 this.value = "Shivom"
 console.log(this.value) //Shivom
 console.log(value) //Shivom
}

这可能是

 function foo() {
 value = "shivom"
 console.log(this.value) //shivom
 console.log(value) //shivom
}

类似地,当In反应时,我正在使用websocket,有人要求我这样做

class cryptoTicker extends Component {

componentDidMount() {
     this.socket = openSocket('https://coincap.io');

    let updateCoinData = [...this.props.cryptoLoaded];
      this.socket.on('trades', (tradeMsg) => {

componentWillUnmount() {
  this.socket.disconnect();
}

代替做这样的事情

 var socket;
class cryptoTicker extends Component {
       componentDidMount() {
         socket = openSocket('https://coincap.io');

        let updateCoinData = [...this.props.cryptoLoaded];
          socket.on('trades', (tradeMsg) => {

      componentWillUnmount() {
        socket.disconnect();
    }

[问题:] 那么,什么时候以及为什么在函数内使用this.xyz?如果有人可以使用上面给出的两个示例向我解释一下?

1 个答案:

答案 0 :(得分:1)

简而言之:

var foo;

function bar(baz) {
    foo = baz;
    console.log(foo);
}

以这种方式,程序中只能具有一个 foo值。这是一个单个 /全局值。

class Foo {
    constructor() {
        this.foo = undefined;
    }

    bar(baz) {
        this.foo = baz;
        console.log(this.foo);
    }
}

let a = new Foo;
let b = new Foo;

a.bar(42);
b.bar('fortytwo');

通过使用类和对象以及在单个对象(this上设置属性),您可以拥有一个对象/值的多个独立实例。这就是面向对象的基础。