javascript - 在另一个对象中访问对象属性

标签 javascript object syntax properties

我在这里的 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}});

http://jsfiddle.net/mattball/LXTAm

关于javascript - 在另一个对象中访问对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13757012/

相关文章:

JavaScript:对象的过滤器()

sql - 数据库更新脚本中的 ALTER PROCEDURE 语法错误

bash - 简单shell脚本程序出错

javascript - 将 "exports"分配给 nodejs 模块中的函数不起作用

c++ - C++ 中对不存在的对象进行赋值

c++ - 如何将结构模板标记为好友?

javascript - React 将数组添加到状态数组

javascript - 如何只显示首次访问者特定的工具提示?

javascript - JS函数调用

javascript - Firefox/Javascript 不显示图像 - Joomla