gpt4 book ai didi

javascript - 哪个对象的Javascript中没有`hasOwnProperty`?

转载 作者:行者123 更新时间:2023-11-30 09:20:39 28 4
gpt4 key购买 nike

通过某些值,hasOwnProperty调用将引发错误。

让我们检查以下代码

null.hasOwnProperty('bar') //error
undefined.hasOwnProperty('bar') //error
(0).hasOwnProperty('bar') //return false


除了使用 nullundefined进行调用时,是否还有其他变量会引发错误?

设置对象属性的问题相同。

null.bar //error
undefined.bar //error
(0).bar === undefined //return true


谢谢

=========

编辑:

让我再加上1种情况,因为它在我的节点环境中引发错误

在浏览器中

'use strict';
(0).bar = 0; //no thing happen


在节点 .hasOwnProperty

(0).bar = 0; //nothing
'use' strict';
(0).bar === undefined; // return true
true.bar === undefined; // return true
''.bar = '';// STILL NOTHING HAPPEN
(0).bar = 0; //TypeError: Cannot create property 'bar' on number '0'
(true).bar = true; // TypeError: Cannot create property 'bar' on boolean 'true'


========

最终,我发现 Check if a value is an object in JavaScript

if (obj instanceof Object) obj.hasOwnProperty(...) //or set property on it


该解决方案完全可以满足我的需求

最佳答案

Using hasOwnProperty as a property name

var foo = {
hasOwnProperty: function() {
return false;
},
bar: 'Here be dragons'
};

foo.hasOwnProperty('bar'); // always returns false

// Use another Object's hasOwnProperty
// and call it with 'this' set to foo
({}).hasOwnProperty.call(foo, 'bar'); // true

// It's also possible to use the hasOwnProperty property
// from the Object prototype for this purpose
Object.prototype.hasOwnProperty.call(foo, 'bar'); // true


还请注意最新的 draft


  当使用参数V调用hasOwnProperty方法时,将执行以下步骤:
  
  
  设P为? ToPropertyKey(V)。
  让O成为? ToObject(此值)。
  返回? HasOwnProperty(O,P)。
  
  
  注意
  
  选择步骤1和2的顺序是为了确保即使此值未定义或为null,在本规范的先前版本中由步骤1引发的任何异常都将继续引发。

关于javascript - 哪个对象的Javascript中没有`hasOwnProperty`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51997513/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com