TypeError:无法设置属性";“字符串”;未定义的at字符串的类型(Javascript)
我有这个“类”: 我是这样使用它的:TypeError:无法设置属性";“字符串”;未定义的at字符串的类型(Javascript),javascript,Javascript,我有这个“类”: 我是这样使用它的: var signUpStates = new BooleanAssoc([ "CNPJ", "PASSWORDS", "ADDRESS", "GENERAL_FIELDS", "STATE", "CITY", "SEGMENT", "PRODUCT", "EMAIL", "TERMS" ]); 我不明白为什么会有打字错误。也许是我的思想太“pythonic”。我创
var signUpStates = new BooleanAssoc([
"CNPJ",
"PASSWORDS",
"ADDRESS",
"GENERAL_FIELDS",
"STATE",
"CITY",
"SEGMENT",
"PRODUCT",
"EMAIL",
"TERMS"
]);
我不明白为什么会有打字错误。也许是我的思想太“pythonic”。我创建一个字典(“关联数组”),迭代字符串列表,创建键并相应地分配它们的值。我做错了什么???这应该可以:
function BooleanAssoc(keyNames) {
this.assoc = {};
$.each(keyNames, function(i, val) {
this.assoc[val] = false;
}.bind(this));
};
这应该起作用:
function BooleanAssoc(keyNames) {
this.assoc = {};
$.each(keyNames, function(i, val) {
this.assoc[val] = false;
}.bind(this));
};
您的
此
不是您期望的此
尝试:
ES5环境您也可以使用.forEach
。如果使用ES6,您可以使用不绑定this
的箭头函数,并使用父作用域:
function BooleanAssoc(keyNames) {
this.assoc = {};
keyNames.forEach(val => {
this.assoc[val] = false;
});
};
您还可以执行以下操作,尽管这通常被认为不是最佳实践,因为它不必要地将变量引入范围。但是,如果您处于类似ES3的环境中,并且无法使用垫片添加ES5功能,则以下操作将起作用:
function BooleanAssoc(keyNames) {
var self = this;
this.assoc = {};
$.each(keyNames, function(i, val) {
self.assoc[val] = false;
});
};
您的
此
不是您期望的此
尝试:
ES5环境您也可以使用.forEach
。如果使用ES6,您可以使用不绑定this
的箭头函数,并使用父作用域:
function BooleanAssoc(keyNames) {
this.assoc = {};
keyNames.forEach(val => {
this.assoc[val] = false;
});
};
您还可以执行以下操作,尽管这通常被认为不是最佳实践,因为它不必要地将变量引入范围。但是,如果您处于类似ES3的环境中,并且无法使用垫片添加ES5功能,则以下操作将起作用:
function BooleanAssoc(keyNames) {
var self = this;
this.assoc = {};
$.each(keyNames, function(i, val) {
self.assoc[val] = false;
});
};
我认为这是一个背景问题。在每个
中,此
指的是当前值,而不是类BooleanAssoc
的上下文
function BooleanAssoc(keyNames) {
var self = this;
self.assoc = {};
$.each(keyNames, function(i, val) {
self.assoc[val] = false;
});
};
试试上面的方法。我认为这是上下文的问题。在每个
中,此
指的是当前值,而不是类BooleanAssoc
的上下文
function BooleanAssoc(keyNames) {
var self = this;
self.assoc = {};
$.each(keyNames, function(i, val) {
self.assoc[val] = false;
});
};
请尝试将回调绑定到
$。每个绑定到这个:$。每个(key…(i,val){}.bind(this))
。尝试将回调绑定到$。每个绑定到这个:$。每个(key…(i,val){}.bind(this))
。