Javascript 在mootools的自定义方法中使用选项构造函数中定义的属性
我从Mootools框架开始。因为我希望代码是可重用的,所以我尝试用类来实现 在下面显示的代码中,目的是使用Raphael framework for SVG绘制地图。代码运行正常,但我对Javascript 在mootools的自定义方法中使用选项构造函数中定义的属性,javascript,mootools,raphael,options,Javascript,Mootools,Raphael,Options,我从Mootools框架开始。因为我希望代码是可重用的,所以我尝试用类来实现 在下面显示的代码中,目的是使用Raphael framework for SVG绘制地图。代码运行正常,但我对选项对象中的属性有问题 var Map = new Class({ Implements : [ Options ], pathsArr: {}, Options: { canvas: { container: 'map', cheight: 500,
选项
对象中的属性有问题
var Map = new Class({
Implements : [ Options ],
pathsArr: {},
Options: {
canvas: {
container: 'map',
cheight: 500,
cwidth: 900,
},
attributes: {
fill: '#006699',
stroke: '#3899E6',
'stroke-width': 1,
'stroke-linejoin': 'round'
}
},
initialize: function (pathsArr, options){
this.setOptions(Options);
this.pathsArr = paths;
console.log(this.pathsArr);
},
setCanvas: function(){
console.log(this.Options.canvas);
R = Raphael(this.Options.canvas.container, this.Options.canvas.cwidth, this.Options.canvas.cheight);
return R;
},
drawPaths: function(){
console.log(this.Options.attributes);
for (var country in this.pathsArr){
var shape = R.path(this.pathsArr[country].path);
var attri = this.Options.attributes;
console.log(attri);
}
}
}))
好的,你可以看到我正在使用console.log
来理解这里发生的事情。当我检查行中的属性时
console.log(this.Options.attributes);
我在谷歌Chrome控制台中得到了这个
当我想我需要一些东西时,比如当我检查路径时发生了什么,它在选项
对象之外
var Map = new Class({
Implements : [ Options ],
pathsArr: {},
Options: {
canvas: {
container: 'map',
cheight: 500,
cwidth: 900,
},
attributes: {
fill: '#006699',
stroke: '#3899E6',
'stroke-width': 1,
'stroke-linejoin': 'round'
}
},
initialize: function (pathsArr, options){
this.setOptions(Options);
this.pathsArr = paths;
console.log(this.pathsArr);
},
setCanvas: function(){
console.log(this.Options.canvas);
R = Raphael(this.Options.canvas.container, this.Options.canvas.cwidth, this.Options.canvas.cheight);
return R;
},
drawPaths: function(){
console.log(this.Options.attributes);
for (var country in this.pathsArr){
var shape = R.path(this.pathsArr[country].path);
var attri = this.Options.attributes;
console.log(attri);
}
}
在我需要属性属性的地方,什么都不会发生。就像这两行
var attri = this.Options.attributes;
shape.attr(attri);
我不明白为什么如果我这样做,它会得到正确的结果
console.log(this.Options.attributes.fill);
好吧,就是这样,我被困在这里,我希望有人能向我解释为什么会发生这种情况。谢谢 Javascript区分大小写。使用setOptions(options)
和this.options
代替options
。只有在引用了选项
变量时,大写字母O
才存在,如实现:[Options]
指令中所述
当前,您的Options
成员无法通过setOptions
调用进行设置,因为它正在查找this.Options
您只使用了此。选项
,这是您的默认选项,永远不会更新。和this.options
被设置为options
mutator,正如您在编写this.setOptions(options)
时所指示的那样
编辑:
此外,在以下代码中:
initialize: function (pathsArr, options){
this.setOptions(Options);
this.pathsArr = paths; // <----- `paths` is undefined
初始化:函数(路径、选项){
此选项。设置选项(选项);
this.pathsArr=paths;//Javascript区分大小写。使用setOptions(options)
和this.options
而不是options
。只有在引用options
mutator时,大写字母O
才存在,如Implements:[options]
指令中所述
当前,您的Options
成员无法通过setOptions
调用进行设置,因为它正在查找this.Options
您只使用了this.Options
,这是您的默认选项,永远不会更新。并且this.Options
被设置为Options
mutator,正如您在编写this.setOptions(Options)
时所指示的那样
编辑:
此外,在以下代码中:
initialize: function (pathsArr, options){
this.setOptions(Options);
this.pathsArr = paths; // <----- `paths` is undefined
初始化:函数(路径、选项){
此选项。设置选项(选项);
this.pathsArr=path;//哇,这是一个完整的答案!语法更正+问题的答案。非常感谢!我同时学习英语和JavaScript编程!哇,这是一个完整的答案!语法更正+问题的答案。非常感谢!我同时学习英语和JavaScript编程时间