[英]Is the hasOwnProperty method in JavaScript case sensitive?
hasOwnProperty()
方法是否區分大小寫? 是否還有其他不區分大小寫的hasOwnProperty
版本?
是的,它區分大小寫(所以obj.hasOwnProperty('x').== obj.hasOwnProperty('X')
)您可以擴展 Object 原型(有人稱之為猴子補丁):
Object.prototype.hasOwnPropertyCI = function(prop) {
return ( function(t) {
var ret = [];
for (var l in t){
if (t.hasOwnProperty(l)){
ret.push(l.toLowerCase());
}
}
return ret;
} )(this)
.indexOf(prop.toLowerCase()) > -1;
}
更多功能:
Object.prototype.hasOwnPropertyCI = function(prop) {
return Object.keys(this)
.filter(function (v) {
return v.toLowerCase() === prop.toLowerCase();
}).length > 0;
};
老問題是老問題; 但仍然完全相關。 我也搜索了這個問題的快速答案,並在閱讀本文之前找到了一個好的解決方案,所以我想我會分享它。
Object.defineProperty(Object, 'hasOwnPropertyCI', {
enumerable: false,
value: (keyName) => (
Object.keys(this).findIndex(
v => v.toUpperCase() === keyName.toUpperCase()
) > -1
}
});
當調用它的 object 中存在 keyName 時,這將解析為true
:
var MyObject = { "foo": "bar" };
MyObject.hasOwnPropertyCI("foo");
希望對其他人有所幫助::D
PS:就個人而言,我的實現將上面的條件添加到 IF 語句中,因為我不會在我的應用程序的其他任何地方使用它(除了我不是操縱原生原型的忠實粉絲這一事實之外)。
是的,它區分大小寫,因為 JavaScript 區分大小寫。
該語言沒有內置替代方案,但您可以自己推出:
function hasOwnPropertyCaseInsensitive(obj, property) {
var props = [];
for (var i in obj) if (obj.hasOwnProperty(i)) props.push(i);
var prop;
while (prop = props.pop()) if (prop.toLowerCase() === property.toLowerCase()) return true;
return false;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.