Jquery 通过camelCase和连字符使选项可访问
如何使用小写、大写、camelCase、PerlCase和连字符提供Jquery 通过camelCase和连字符使选项可访问,jquery,jquery-plugins,naming-conventions,naming,Jquery,Jquery Plugins,Naming Conventions,Naming,如何使用小写、大写、camelCase、PerlCase和连字符提供JSON-键。我们有这样的对象表示法,它是用camelCase声明的: var options = { "fooBar": "foo bar" }; 但是,如果用户使用连字符或类似字符声明默认值,该怎么办 var options = { "foo-bar": "foo bar" }; 如何访问它们,然后只需一个键 例如,使用连字符和camelCase可访问$.fn.css和$.fn.animate中的关键点
JSON
-键。我们有这样的对象表示法,它是用camelCase声明的:
var options = {
"fooBar": "foo bar"
};
但是,如果用户使用连字符或类似字符声明默认值,该怎么办
var options = {
"foo-bar": "foo bar"
};
如何访问它们,然后只需一个键
例如,使用连字符和camelCase可访问$.fn.css
和$.fn.animate
中的关键点
已经有这样的方法了吗 我做了一些东西,虽然不完美,但到目前为止仍然有效:
(function(){
var methods = {
toLowerCase: function(str){
return str.toLowerCase();
},
toUpperCase: function(str){
return str.toUpperCase();
},
toCamelCase: function(str){
return str.replace(/(\-[a-z])/g, function($1){
return $1.toUpperCase().replace("-", "");
});
},
toDashCase: function(str){
return str.replace(/([A-Z])/g, function($1){
return "-"+$1.toLowerCase();
});
}
};
Object.prototype.getItem = function(key) {
var opt = this[key];
if(opt) return opt;
for(var method in methods) {
if(methods.hasOwnProperty(method)) {
opt = this[ methods[method](key) ];
if(opt) return opt;
}
}
};
}());
我使用了Object.prototype
使用法非常简单:
var options = {
"foo": "foo",
"BAR": "BAR",
"fooBar": "fooBar",
"bar-foo": "bar-foo"
};
console.log(
options.getItem("foo"), // "foo"
options.getItem("Foo"), // "foo"
options.getItem("FOO"), // "foo"
options.getItem("bar"), // "BAR"
options.getItem("bar"), // "BAR"
options.getItem("BAR"), // "BAR"
options.getItem("fooBar"), // "fooBar"
options.getItem("foo-bar"), // "fooBar"
options.getItem("barFoo"), // "bar-foo"
options.getItem("bar-foo") // "bar-foo"
);
不是十全十美的,但可以进行任何改进