0

これをどうやってやるのかしら。用語がわからないので、お詫び申し上げます。メソッドを使用すると、jQueryでこの動作が見られます.css()。すでにご存知かもしれませんが、このメソッドはいくつかのオプションを受け入れます。

次のことができます。

$("#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")ます"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 に答える