js判断对象是否拥有某个key

一、两种判断方法

方法一 :"key" in obj ,结果为 false,表示不包含;否则表示包含

方法二 :obj.hasOwnProperty("key"),obj 表示对象,结果为 false 表示不包含;否则表示包含

二、两种方法的区别

这两种方法都可以用于检查对象是否包含指定的属性,但它们有一些区别。

  1. “key” in obj:

    • 这种方法使用 in 运算符来检查属性是否存在于对象中。
    • 如果对象 obj 或其原型链中包含名为 “key” 的属性,则返回 true
    • 如果对象 obj 不包含名为 “key” 的属性,并且它的原型链上也不存在该属性,则返回 false
  2. 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 对象的。

因此,选择使用哪种方法取决于你对属性存在性的具体需求,是希望检查对象及其原型链上的属性,还是仅仅检查对象自身的属性。

你可能感兴趣的:(NodeJS,javascript,前端,vue.js,node.js)