1.in 运算符
语法:属性 in 对象;
返回值:Boolean
// 内置对象
console.log("PI" in Math); // 返回true
// 自定义对象
let carInfo = { make: "Honda", model: "Accord", year: 2020 };
console.log("make" in carInfo); // 返回true
// in右操作数必须是一个对象值。例如,你可以指定使用String构造函数创建的字符串,但不能指定字符串文字。
let str = new String("javascript");
console.log("length" in str); // 返回true
str = "I is string";
console.log("length" in str);
// 报错:Cannot use 'in' operator to search for 'length' in ……
// 只是将一个属性的值赋值为undefined,而没有删除它,则 in 运算仍然会返回true
let carInfo = { make: "Honda", model: "Accord", year: 2020 };
carInfo.make = undefined;
console.log("make" in carInfo); // 返回true
// 如果一个属性是从原型链上继承来的,in 运算符也会返回 true。
console.log("toString" in {}); // 返回true
注意:
(1)如果指定的属性在指定的对象或其原型链中,则 in 运算符 返回true。
(2)可以判断内置对象上的属性。
(3)使用 delete 运算符删除了一个属性,则 in 运算符对所删除属性返回 false。
(4)将一个属性的值赋值为 undefined,而没有删除它,则 in 运算仍然会返回true。
(5)对于字符串的属性也可以判断,只是必须是字符串对象 new String() 创建的字符串。
2.对象.hasOwnProperty('属性')
语法:对象.hasOwnProperty('属性');
返回值:Boolean
使用场景:只判断自身属性
提醒:和原型没关系 ,不会查找原型上的属性
// 自定义对象
let carInfo = { make: "Honda", model: "Accord", year: 2020 };
console.log(obj.hasOwnProperty('make')); // true
console.log(obj.hasOwnProperty('model')); // true
console.log(obj.hasOwnProperty('price')); // false
console.log(obj.hasOwnProperty('toString')); // false
// 内置对象
console.log(Math.hasOwnProperty('PI')); // true
3.点( . )或者方括号( [ ] )
语法: obj.属性 != undefined 或 obj['属性'] != undefined
返回值:Boolean
提醒1:可以查找原型上的属性
提醒2:不能用在对象的属性值存在,属性值为 undefined 的场景下。
// 自定义对象
let carInfo = { make: "Honda", model: "Accord", year: 2020 };
console.log(obj.make != undefined)); // true
console.log(obj.['model'] != undefined); // true
console.log(obj.price != undefined); // false
// 内置对象
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。