簡體   English   中英

JavaScript 中的 hasOwnProperty 方法是否區分大小寫?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM