提问人:SebastiaanTheCoder 提问时间:10/7/2023 更新时间:10/7/2023 访问量:25
定义 2 个单独的对象,但对一个对象调用函数仍然会更改另一个 [duplicate]
defining 2 seperate objects but calling a function on one still changes the other [duplicate]
问:
当我需要一些东西来实现一个标志时,我正在用 javascript (nodeJS) 编码,以确定某个函数是否可以在事件上运行。我认为一个聪明的方法是创建一个单独的文件,我在其中跟踪我的所有标志(如果有更好的方法,请随时告诉我)。我创建了一个标志对象,如下所示:
let flag1 = {
value: false,
set: (value) => {
this.value = value
},
get: () => {
return this.value
}
}
module.exports = {flag1}
这在我添加第二个标志之前效果很好。我很懒惰,只是复制粘贴了语句以创建第一个标志,我更改了名称并将其添加到导出中。
let flag1 = {
value: false,
set: (value) => {
this.value = value
},
get: () => {
return this.value
}
}
let flag2 = {
value: false,
set: (value) => {
this.value = value
},
get: () => {
return this.value
}
}
module.exports = {flag1, flag2}
但令我大吃一惊的是,当我打电话时
flag1.set(true)
console.log(flag1.get())
console.log(flag2.get())
得到的回应是
true
true
这怎么可能? 我发现更令人困惑的是,当我刚刚创建一个创建标志变量的函数时,对象的行为完全符合预期......(下面的代码有效)
function createFlag() {
this.value = false
this.set = (value) => {
this.value = value
}
this.get = () => {
return this.value
}
}
const flag1 = new createFlag()
const flag2 = new createFlag()
两者有什么区别,因为我真的说不出来。 提前致谢。
答: 暂无答案
评论
this
global
window
createFlag
new createFlag()
globalThis
类
语法。没有(或类似)就不能调用通过创建的构造函数。createFlag
new
CreateFlag
Flag
new
class
new