gpt4 book ai didi

javascript - 插入对象数组属性还会为对象类的 future 实例设置值

转载 作者:行者123 更新时间:2023-11-29 22:20:03 27 4
gpt4 key购买 nike

我在 Ember 对象上看到这种奇怪的行为,当我更改 instance.get 的数组时,更改将应用​​到类默认值(因此,应用到类的任何新实例对象)。

但是,如果我将 alter 设置为计算属性,它会很好地工作(因为它确保我总是发送数组的新实例)。

我想知道这是不是正常行为,在我看来它不应该,但我很可能误解了一些事情。

这是一个示例(在 this jsfiddle 中可用):

A = Ember.Object.extend
array: []

a = A.create()
a.get('array').pushObject('something') # same with push

b = A.create()
b.get('array') # ['something']


B = Ember.Object.extend
array: ( ->
[]
).property()

a = B.create()
a.get('array').pushObject('something else')

b = B.create()
b.get('array') # []

最佳答案

这里有一个很好的解释:http://codebrief.com/2012/03/eight-ember-dot-js-gotchas-with-workarounds/第 6 章 tl;dr:当您想将数组作为属性时,请在构造函数中对其进行初始化,例如

A = Ember.Object.extend
array: null
init: (->
@_super()
@set('array', [])
)

更新的 fiddle :http://jsfiddle.net/Sly7/atjVu/4/

关于javascript - 插入对象数组属性还会为对象类的 future 实例设置值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12923173/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com