Javascript 维护'的范围;这';在构造函数模块中
我试图学习模块设计模式,但在嵌套方法函数中的作用域方面遇到了问题。关于这个话题的其他问题似乎比我正在做的更高级。因此,在以下代码中:Javascript 维护'的范围;这';在构造函数模块中,javascript,module,scope,Javascript,Module,Scope,我试图学习模块设计模式,但在嵌套方法函数中的作用域方面遇到了问题。关于这个话题的其他问题似乎比我正在做的更高级。因此,在以下代码中: var myModule = function(){ var myObject = { myArray: [], //array of items addItem: function(arg){ var item = { type: "example",
var myModule = function(){
var myObject = {
myArray: [], //array of items
addItem: function(arg){
var item = {
type: "example",
value: arg
}
this.myArray.push(item);
}
}
return myObject;
}
方法“addItem”似乎不是将对象添加到“myObject.myArray”,而是将其添加到自身?不太清楚。谁能给我一个提示吗?提前谢谢 “this”的作用域是addItem()函数。你需要使用
myObject.myArray.push(item);
您将看到一种常见做法,函数将“this”设置为另一个变量,以便稍后在子函数/对象内部引用
var self = this;
或
“this”的作用域是addItem()函数。你需要使用
myObject.myArray.push(item);
您将看到一种常见做法,函数将“this”设置为另一个变量,以便稍后在子函数/对象内部引用
var self = this;
或
“this”的作用域是addItem()函数。你需要使用
myObject.myArray.push(item);
您将看到一种常见做法,函数将“this”设置为另一个变量,以便稍后在子函数/对象内部引用
var self = this;
或
“this”的作用域是addItem()函数。你需要使用
myObject.myArray.push(item);
您将看到一种常见做法,函数将“this”设置为另一个变量,以便稍后在子函数/对象内部引用
var self = this;
或
这将如您所期望的那样工作,项目将被推送到myObject的数组中
var myModule = function(){
var myObject = {
myArray: [], //array of items
addItem: function(arg){
var item = {
type: value,
value: arg
}
myObject.myArray.push(item);
}
}
return myObject;
}
尽管addItem函数中未定义“value”变量。这将按预期工作,并且项将被推送到myObject的数组中
var myModule = function(){
var myObject = {
myArray: [], //array of items
addItem: function(arg){
var item = {
type: value,
value: arg
}
myObject.myArray.push(item);
}
}
return myObject;
}
尽管addItem函数中未定义“value”变量。这将按预期工作,并且项将被推送到myObject的数组中
var myModule = function(){
var myObject = {
myArray: [], //array of items
addItem: function(arg){
var item = {
type: value,
value: arg
}
myObject.myArray.push(item);
}
}
return myObject;
}
尽管addItem函数中未定义“value”变量。这将按预期工作,并且项将被推送到myObject的数组中
var myModule = function(){
var myObject = {
myArray: [], //array of items
addItem: function(arg){
var item = {
type: value,
value: arg
}
myObject.myArray.push(item);
}
}
return myObject;
}
虽然您的'value'变量未在addItem函数中定义。停止尝试欺骗死亡。只需使用原型 比如:
var MyModule = function() {
this.myArray = [];
};
MyModule.prototype.addItem = function(arg) {
var item = {
type : "example",
value : arg
};
this.myArray.push(item);
};
你会这样称呼它:
var myModule = new MyModule()
myModule.addItem({
better : 'way'
});
停止欺骗死亡。只需使用原型 比如:
var MyModule = function() {
this.myArray = [];
};
MyModule.prototype.addItem = function(arg) {
var item = {
type : "example",
value : arg
};
this.myArray.push(item);
};
你会这样称呼它:
var myModule = new MyModule()
myModule.addItem({
better : 'way'
});
停止欺骗死亡。只需使用原型 比如:
var MyModule = function() {
this.myArray = [];
};
MyModule.prototype.addItem = function(arg) {
var item = {
type : "example",
value : arg
};
this.myArray.push(item);
};
你会这样称呼它:
var myModule = new MyModule()
myModule.addItem({
better : 'way'
});
停止欺骗死亡。只需使用原型 比如:
var MyModule = function() {
this.myArray = [];
};
MyModule.prototype.addItem = function(arg) {
var item = {
type : "example",
value : arg
};
this.myArray.push(item);
};
你会这样称呼它:
var myModule = new MyModule()
myModule.addItem({
better : 'way'
});
哎呀,这只是一个例子。一个打字错误,真的。谢谢你抓住它。在我的示例代码中修复它…哦,这只是一个示例。一个打字错误,真的。谢谢你抓住它。在我的示例代码中修复它…哦,这只是一个示例。一个打字错误,真的。谢谢你抓住它。在我的示例代码中修复它…哦,这只是一个示例。一个打字错误,真的。谢谢你抓住它。在我的示例代码中修复了它……那么,在这种情况下,我应该在哪里分配“var self=this;”?它不是myObject的属性,但将它放在myModule中似乎超出了我需要的范围。这只是一个关于范围和将“this”设置为变量的示例。在您的示例中,它不起作用。因此,在这种情况下,我应该在哪里分配“var self=this;”?它不是myObject的属性,但将它放在myModule中似乎超出了我需要的范围。这只是一个关于范围和将“this”设置为变量的示例。在您的示例中,它不起作用。因此,在这种情况下,我应该在哪里分配“var self=this;”?它不是myObject的属性,但将它放在myModule中似乎超出了我需要的范围。这只是一个关于范围和将“this”设置为变量的示例。在您的示例中,它不起作用。因此,在这种情况下,我应该在哪里分配“var self=this;”?它不是myObject的属性,但将它放在myModule中似乎超出了我需要的范围。这只是一个关于范围和将“this”设置为变量的示例。这在你的例子中是行不通的。