0

我想知道如何去做这件事。不确定术语是什么,所以我为此道歉。.css()当您使用该方法时,我在 jQuery 中看到了这种行为。您可能已经知道,此方法接受几个选项:

您可以执行以下操作:

$("#box").css("background-color", "red");//sets the bg color to red
$("#box").css("background-color");//returns the bg color of #box
var properties = {"background-color" : "red", "width" : 100};
$("#box").css(properties); //sets multiple properties in one call with literal object.

所以,我不太担心这个功能的吸气剂部分。我最感兴趣的是它区分变量和文字对象的能力。我想根据它收到的参数创建一个具有相同行为的插件。一个简单的例子是这样的:

function openWindow(URL_OR_OBJECT){
    if(variable){
    window.open(URL_OR_OBJECT);
   return; 
  }
   var opt = URL_OR_OBJECT;
   window.open(opt.url, opt.title, opt.options, opt.replace);
}
4

3 回答 3

2

您可以检查参数的类型typeof

function openWindow(parameter){
    if(typeof parameter == "string"){
        window.open(parameter);
    }
    else if(typeof parameter == "object"){
        window.open(parameter.url, parameter.title, parameter.options, parameter.replace);
    }
}
于 2013-01-11T03:32:08.627 回答
0

您可以使用typeof来查看参数是否为字符串。

if ( typeof URL_OR_OBJECT === "string" ) {
  window.open(URL_OR_OBJECT);
} else { /*...*/ }

您可以谨慎使用它,因为typeof new String("hello")is "object"。但我认为没有太多人以这种方式声明字符串。

MDN 上的 typeof 文档:https ://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/typeof

于 2013-01-11T03:33:21.810 回答
0

虽然我没有特别查看源代码,但我认为它的结构类似于以下内容:

function css(bgcolor_or_obj, width, etc) {
    var bgcolor;
    if(typeof bgcolor_or_obj === 'object') {
        // Expand configuration object here.
        bgcolor = bgcolor_or_obj.bgcolor;
        width = bgcolor_or_obj.width;
        etc = bgcolor_or_obj.etc;
    } else {
        bgcolor = bgcolor_or_obj;
    }

    /* ... */
}

我知道 Javascript 中没有标准化的方法来区分传递给函数的参数是变量还是文字。如上所示,所讨论的函数更有可能检查第一个参数是否为对象。

于 2013-01-11T03:34:15.460 回答