如何正确访问javascript类值

时间:2019-02-05 23:22:55

标签: javascript es6-class

我确实建立了一个用于处理数据库的类构造函数,但是在旅途中,我对javascript的行为产生了一些疑问。

为了更好地理解问题,我将所有内容都简化为最小表达。这是核心:

name.js

class Name {
    constructor(){
        this.value = 'mo'
    }
    setName(){
        this.value = 'moom'
    }
}

export default new Name()

sayName.js

import name from './name'

const outsideName = name.value

function sayName(){
    const insideName = name.value
    console.log(insideName) // => moon
    console.log(outsideName) // => mo
}

export default sayName

index.js

import name from './name'
import sayName from './sayName'

name.setName()
sayName()

我期望从控制台(月亮)获得相同的输出值。 为什么控制台的输出不同(mo!=== moon)? 如果您能帮助我,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

  1. 您创建Name的实例
  2. 您将其名称属性(mo)的值复制到outsideName
  3. 您调用name.setName(),将其name属性的值更改为moon。
  4. 您记录其name属性的值。
  5. 您记录outsideName的值

由于在第2步之后您从未更改outsideName,所以它不会更改。


  

我将所有内容都还原为最小表达。

您可以进一步减少它。

let object = { foo: 1 };
let value = object.foo;
object.foo = 2;
console.log( object.foo, value);