JavaScript中为什么可以在数组内对象的属性上使用includes方法
const obj1 = { name: "kim", age: 14 }; const obj2 = { name: "Steve", age: 20}; const arr = [ obj1, obj2]; arr[0]["name"].includes("han"); // 实际返回false,你示例注释标注的true是错误结果
认知错误点说明
includes()不是数组专属方法,String 原型上同样部署了includes()实例方法,作用是检测调用方法的字符串中是否包含传入的子串,匹配成功返回 true,否则返回 false。- 你调用
includes()的主体既不是对象也不是数组:arr[0]确实是你定义的obj1对象- 后续通过
["name"]取到的是该对象的name属性值,也就是字符串类型的"kim" - 最终是在字符串
"kim"上调用的includes()方法,完全符合字符串方法的调用规则,不存在对象调用数组方法的情况。
内容的提问来源于stack exchange,提问作者김경한
相关产品推荐
相关产品推荐

