尝试在对象中使用mColumns
参数时,我遇到以下代码问题。第一个控制台日志输出正确,但传递给Backbone.View.extend
的对象内部没有输出,它输出未定义。
define(["collections/mColumns"],function(mColumns){
console.log(mColumns);
return Backbone.View.extend({
el: "#content",
events:{
'click #addText': "addText"
},
initialize: function(mColumns){
console.log(mColumns);
}
});
});
但是,如果我事先创建一个对象然后将该对象作为参数传递它可以正常工作。两个控制台日志输出正确。
define(["collections/mColumns"],function(mColumns){
console.log(mColumns);
var obj = {
el: "#content",
events:{
'click #addText': "addText"
},
initialize: function(){
console.log(mColumns);
}
}
return Backbone.View.extend(obj);
});
为什么会这样?
答案 0 :(得分:1)
工作(第二个)代码段与第一个代码段之间的区别在于第一个代码段隐藏了mColumns
变量。通过定义具有相同名称的形式函数参数,原始变量对函数内部的代码变得不可见:
define(["collections/mColumns"],function(mColumns){ // <-- mColumns (#1)
...
return Backbone.View.extend({
...
initialize: function(mColumns){ // <-- mColumns (#2)
console.log(mColumns); // <-- Refers to #2
}
})
});