1

我正在创建以下 Dygraph 对象:

function prime() {
  g = new Dygraph(
    document.getElementById("g"),
      data, //This is the variable I want to avoid passing in for older browsers
      {
      labelsDivStyles: { 'textAlign': 'right' },
      title: document.getElementById("title").value,
      titleHeight: 35,
      labelsSeparateLines: true,
      includeZero: true
      }
  );
}

我想要一个浏览器检查来确定是否包含“数据”,例如:

if(Browser.Version() > 8){
  //include data variable
} else{
  //don't include
}

除了创建第二个函数来处理另一种情况之外,有没有人有任何想法

4

1 回答 1

0

您要么需要事先创建和操作对象字面量,要么需要在valuenull / undefined之间交替使用三元运算符。

var myObj = {
    labelsDivStyles: { 'textAlign': 'right' },
    title: document.getElementById("title").value,
    titleHeight: 35,
    labelsSeparateLines: true,
    includeZero: true
};

if( Browser.Version() > 8 ) {
    myObj.data = 42;
}

或者

function prime() {
    g = new Dygraph(
     document.getElementById("g"),
      data,
      {
      labelsDivStyles: { 'textAlign': 'right' },
      title: document.getElementById("title").value,
      titleHeight: 35,
      labelsSeparateLines: true,
      includeZero: true,
      data: Browser.Version() > 8 ? 42 : null
      }
  );
}

您也可以选择使用一个自调用函数来完成这项工作并返回该对象,但这与示例 #1 几乎相同。无论哪种方式,您都不能告诉 ECMAscript 在形成对象字面量时创建或不创建键。

于 2013-03-08T16:24:21.780 回答