如何正确访问 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)?
如果你能帮助我,我将不胜感激。
- 您创建了 Name 的一个实例
- 你把它名字属性(mo)的值复制到
outsideName
- 您调用
name.setName()
将其 name
属性 的值更改为 moon。
- 你记录它的值
name
属性.
- 您记录
outsideName
的值
由于您在第 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);
我正在设置一个 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)? 如果你能帮助我,我将不胜感激。
- 您创建了 Name 的一个实例
- 你把它名字属性(mo)的值复制到
outsideName
- 您调用
name.setName()
将其name
属性 的值更改为 moon。 - 你记录它的值
name
属性. - 您记录
outsideName
的值
由于您在第 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);