我做了一些不完美的东西,但它到目前为止有效:
(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"
);
不完美,但可以进行任何改进。