我在这里的 jsFiddle 中设置了这个问题:http://jsfiddle.net/GeekStocks/WHtCv/
我正在编写一个 jQuery 插件实例方法,但我终其一生都找不到用于覆盖嵌套对象属性值的正确语法!这是代码(来自 jsFiddle):
jQuery.fn.test = function(options) {
var defaults = {
settings: {
height: 0, // must be computed
width: 0, // must be computed
scale: 0.20 // percentage of the >> height <<
},
simpleVar: "Hola hombre." // default is masqualine
};
var opts = jQuery.extend(defaults, options); // override defaults
this.val(opts.simpleVar + "\nScale: " + opts.settings.scale);
};
现在,如果我想覆盖“simpleVar”,这很容易:
$("#t1").test({simpleVar: "Hola senora."});
但是改变“settings”对象的“scale”属性让我望而却步...
$("#t2").test({"settings.scale": 0.86}); // uh, nope!
有人吗?可能很简单,对吧? :-) 谢谢!
最佳答案
使用 deep
extend , 和嵌套对象:
jQuery.fn.test = function(options) {
// snip...
// ↓↓↓↓
var opts = jQuery.extend(true, defaults, options);
this.val(opts.simpleVar + "\nScale: " + opts.settings.scale);
};
// then
$("#t2").test({settings: {scale: 0.86}});
关于javascript - 在另一个对象中访问对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13757012/