gpt4 book ai didi

javascript - 向主干中的原型(prototype)对象添加值不起作用

转载 作者:行者123 更新时间:2023-11-28 08:54:31 25 4
gpt4 key购买 nike

在主干中,我有一个带有名为“mistakes_dict”的自定义原型(prototype)对象的 View 。我想记录所犯的错误,所以我希望 attempts_dict 能够保留下来。但是,当“next_stage”方法运行时,我收到错误,错误_dict 未定义。为什么会发生这种情况?当我在 nextstage 方法中本地定义错误字典时,它工作正常,但当然,下次该方法运行时相同的字典不可用。

作为旁注,如果字典尚不存在(值为 1),如何让字典创建一个新键,如果存在则将其加 1?我知道如何在 Python 中执行此操作,但我是 JS 新手。

window.View = Backbone.View.extend({

mistakes_dict: {},

initialize: function () {
this.render();
},

events: {
"click .nextstage" : "nextstage"
},

nextstage: function () {
var mistakes_string = $("span.highlighted").text();
for(var i = 0, len = mistakes_string.length; i < len; i++){
mistakes_dict[mistakes_string[i]] = 1;
};

},

render: function () {
this.$el.html(this.template(this.model.toJSON()));
return this;
}
});

最佳答案

你在window.View = Backbone.View.extend({ ... })里面定义的东西附加到原型(prototype)上,因此您必须通过 this 访问它们:

for(var i = 0, len = mistakes_string.length; i < len; i++){
this.mistakes_dict[mistakes_string[i]] = 1;
}

当然,因为 mistakes_dict实际上附加到 View 原型(prototype),您将有一个 mistakes_dict对象在 View 的所有实例之间共享;您可以将原型(prototype)上的属性视为类属性。如果你想要一个独特的 mistakes_dict在每个实例上然后在构造函数中分配它:

window.View = Backbone.View.extend({
initialize: function () {
this.mistakes_dict = { };
this.render();
},
//...

关于javascript - 向主干中的原型(prototype)对象添加值不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18690397/

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