我确实建立了一个用于处理数据库的类构造函数,但是在旅途中,我对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)? 如果您能帮助我,我将不胜感激。
答案 0 :(得分:0)
outsideName
name.setName()
,将其name
属性的值更改为moon。name
属性的值。outsideName
的值由于在第2步之后您从未更改outsideName
,所以它不会更改。
我将所有内容都还原为最小表达。
您可以进一步减少它。
let object = { foo: 1 };
let value = object.foo;
object.foo = 2;
console.log( object.foo, value);