首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >hasOwnProperty Uncaught

hasOwnProperty Uncaught
EN

Stack Overflow用户
提问于 2018-11-14 11:14:08
回答 1查看 478关注 0票数 1

hasOwnProperty()在定义对象的上下文之外被调用时,我试图理解它的错误消息。即,与myObj.hasOwnProperty('propName')不同,只需:

代码语言:javascript
复制
hasOwnProperty('propName')

错误信息是:

VM269:1 Uncaught TypeError: Cannot convert undefined or null to object at hasOwnProperty (<anonymous>) at <anonymous>:1:1

我所期待的错误:

VM280:1 Uncaught ReferenceError: hasOwnProperty is not defined at <anonymous>:1:1

到底什么东西没能转化?

代码语言:javascript
复制
console.log(window.hasOwnProperty('blur'));
hasOwnProperty('propName');

编辑:

我想人们误解了我的问题。据我所知,您通常会像调用myObj.hasOwnProperty('propName')一样调用它。我想更好地理解它所抛出的错误。到底是什么未能转换?正如@Felix所指出的,它应该隐式地回到window.hasOwnProperty('propName')

编辑2:

有趣的是,我从developer.mozilla.org获得了将其重命名为new_hasOwnProperty的多边形填充,它的工作原理与预期的一样:

代码语言:javascript
复制
try{
    hasOwnProperty('blur');
}
catch(error) { console.log(error.message); }

// Polyfill
(function(w) {
  var isFunction = w.isFunction || (w.isFunction = function(x) {
      return typeof(x) === 'function'
    }),
    has = w.has || (w.has = function(o, p) {
      var e = p in o;
      return {
        value: e && (e = o[p]) && true,
        refer: e,
        valueOf: function() {
          return this.value
        }
      }
    }),
    Polyfill = w.PolyfillMethod || (w.PolyfillMethod = function(o, p, x) {
      var e = has(o, p);
      if (e && (e = isFunction(e.refer)) === false) {
        o[p] = x
      };
      return e
    }),
    theProto = w.Object.prototype;

  Polyfill(theProto, 'new_hasOwnProperty', function(x) {
    var o, e = this,
      p = String(x);
    return p in e && (o = e.__proto__ || e.constructor.prototype, (p in o === false) || e[p] !== o[p])
  });

})(window);

console.log(new_hasOwnProperty('blur'));

EN

回答 1

Stack Overflow用户

发布于 2018-11-14 11:26:28

此错误发生,原因方法期望Object定义该property是否属于此Object

您应该使用如下语法:

Object.hawOwnProperty(property)

此外,在函数需要Object但获取null的地方,您可能会遇到这样的错误。

例如:

Object.keys(null)

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53298915

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档