如何正确访问 javascript class 值

How to access properly to javascript class values

我正在设置一个 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. 您创建了 Name 的一个实例
  2. 你把它名字属性(mo)的值复制到outsideName
  3. 您调用 name.setName() 将其 name 属性 的值更改为 moon。
  4. 你记录它的值 name 属性.
  5. 您记录 outsideName
  6. 的值

由于您在第 2 步后从未更改 outsideName,因此它不会更改。


I reduced everything to its minimal expression.

你可以进一步减少它。

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