我想知道如何去做这件事。不确定术语是什么,所以我为此道歉。当您使用.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.
所以,我并不担心这个功能的getter部分。我最感兴趣的是能够区分变量和文字对象。我想基于它接收的参数创建一个具有相同行为的插件。一个简单的例子是这样的:
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);
}
答案 0 :(得分: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);
}
}
答案 1 :(得分:0)
您可以使用typeof
查看参数是否为字符串。
if ( typeof URL_OR_OBJECT === "string" ) {
window.open(URL_OR_OBJECT);
} else { /*...*/ }
你可以谨慎使用它,因为typeof new String("hello")
是"object"
。但我不认为太多人会用这种方式声明字符串。
类型文档:https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/typeof
答案 2 :(得分: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中没有标准化的方法来区分传递给函数的参数作为变量或文字。有问题的函数更有可能是检查第一个参数是否是一个对象,如上所示。