saf*_*opy 1 javascript jquery scope
我正在研究一个jQuery插件,但是在使我的变量适当缩放时遇到了一些麻烦.这是我的代码中的一个例子:
(function($) {
$.fn.ksana = function(userOptions) {
var o = $.extend({}, $.fn.ksana.defaultOptions, userOptions);
return this.each(function() {
alert(rotate()); // o is not defined
});
};
function rotate() {
return Math.round(o.negRot + (Math.random() * (o.posRot - o.negRot)));
};
$.fn.ksana.defaultOptions = {
negRot: -20,
posRot: 20
};
})(jQuery);
Run Code Online (Sandbox Code Playgroud)
我试图让私有函数旋转以便能够看到o变量,但它只是保持警告'o未定义'.我不确定我做错了什么.
该o变量的局部范围内$.fn.ksana的功能,为了使rotate到达它,您应该:
o变量作为参数传递给它.ksana.o在外部范围内定义.IMO,将其作为参数传递就足够了:
(function($) {
$.fn.ksana = function(userOptions) {
var o = $.extend({}, $.fn.ksana.defaultOptions, userOptions);
return this.each(function() {
alert(rotate(o)); // pass o
});
};
function rotate(o) { // use passed object
return Math.round(o.negRot + (Math.random() * (o.posRot - o.negRot)));
}
//...
})(jQuery);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3883 次 |
| 最近记录: |