一、两种判断方法
方法一 :"key" in obj
,结果为 false,表示不包含;否则表示包含
方法二 :obj.hasOwnProperty("key")
,obj 表示对象,结果为 false 表示不包含;否则表示包含
二、两种方法的区别
这两种方法都可以用于检查对象是否包含指定的属性,但它们有一些区别。
-
“key” in obj:
- 这种方法使用
in
运算符来检查属性是否存在于对象中。 - 如果对象
obj
或其原型链中包含名为 “key” 的属性,则返回true
。 - 如果对象
obj
不包含名为 “key” 的属性,并且它的原型链上也不存在该属性,则返回false
。
- 这种方法使用
-
obj.hasOwnProperty(“key”):
- 这种方法使用
hasOwnProperty
方法来检查对象是否直接拥有指定的属性。 - 如果对象
obj
直接拥有名为 “key” 的属性,则返回true
。 - 如果对象
obj
不直接拥有名为 “key” 的属性,或者它的原型链上存在该属性,则返回false
。
- 这种方法使用
区别如下:
-
"key" in obj
检查的是属性是否存在于对象obj
或其原型链中,而不仅仅是对象本身。 -
obj.hasOwnProperty("key")
检查的是属性是否直接存在于对象obj
中,不包括其原型链。
三、举个例子来说明:
var obj = { key: "value" };
console.log("key" in obj); // 输出: true
console.log(obj.hasOwnProperty("key")); // 输出: true
console.log("toString" in obj); // 输出: true (toString是Object的原型方法)
console.log(obj.hasOwnProperty("toString"));// 输出: false
在这个例子中,obj
对象直接拥有名为 “key” 的属性,因此两种方法都返回 true
。同时,由于 toString
方法存在于 Object
的原型中,因此使用 in
运算符检查 "toString" in obj
会返回 true
,但 obj.hasOwnProperty("toString")
返回 false
,因为该属性不是直接属于 obj
对象的。文章来源:https://www.toymoban.com/news/detail-716486.html
因此,选择使用哪种方法取决于你对属性存在性的具体需求,是希望检查对象及其原型链上的属性,还是仅仅检查对象自身的属性。文章来源地址https://www.toymoban.com/news/detail-716486.html
到了这里,关于js判断对象是否拥有某个key的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!