考虑以下代码:
var Widget = new Class({
Implements: [Options],
options: {
"name" : "BaseWidget"
},
initialize: function(options) {
alert("Options are: " + JSON.stringify(options)); //alerts "Options are: undefined"
this.setOptions(options);
alert("My options are: " + JSON.stringify(this.options)); //alerts "My options are: { 'name' : 'BaseWidget' }"
},
getName: function() {
return this.options.name;
}
});
var LayoutWidget = Widget.extend({
initialize: function() {
this.parent({ "name" : "Layout" });
}
});
alert(new LayoutWidget().getName()); //alerts "BaseWidget"
我很难确定为什么在 LayoutWidget 的“初始化”函数中调用“this.parent()”时传递的参数在 Widget 的初始化函数中显示为“未定义”。
我正在使用 MooTools 1.2.2。有人能给我指出正确的方向吗?
最佳答案
检查这个:http://www.jsfiddle.net/F4hTS/
形式略有不同。
var Widget = new Class({
Implements: [Options],
options: {
"name" : "BaseWidget"
},
initialize: function(options) {
alert("Options are: " + JSON.stringify(options)); //alerts "Options are: undefined"
this.setOptions(options);
alert("My options are: " + JSON.stringify(this.options)); //alerts "My options are: { 'name' : 'BaseWidget' }"
},
getName: function() {
return this.options.name;
}
});
Widget.LayoutWidget = new Class({
Extends: Widget,
initialize: function(options) {
this.parent(options);
}
});
alert(new Widget.LayoutWidget({ "name" : "Layout" }).getName()); //alerts "Layout"
关于javascript - MooTools Class.extend 有困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3067407/