怎样检测对象是否具有某个属性或方法

前言: 检测对象是否具有某个属性分为两种情况.

1. 如果要检测从原型链上继承的属性, 则使用: in 关键字;

2. 如果不检测继承的属性, 则使用: Object.hasOwnProperty() 方法;

第一步: 使用 in 关键字

var obj = {};

// obj.name没有声明, 且原型链上也没有找到, 因此返回false
"name" in obj; // false

// obj没有声明 toString 方法, 但在原型链上找到了, 因此返回true
"toString" in obj; // true

// 为obj新增一个属性和方法
obj.name = "Lilei";
obj.sayHi = function(){console.log("Hi.")};
"name" in obj; // true;
"sayHi" in obj; // true;

第二步: 使用 Object.prototype.hasOwnProperty() 方法

var obj = {};

// obj.name没有声明, 故返回false
obj.hasOwnProperty("name"); // false

// obj没有声明 toString 方法, 尽管在原型链上有, 但不是定义在obj上的, 因此返回false
obj.hasOwnProperty("toString"); // false

// 为obj新增一个属性和方法
obj.name = "Lilei";
obj.sayHi = function(){console.log("Hi.")};

obj.hasOwnProperty("name"); // true
obj.hasOwnProperty("sayHi"); // true

猜你喜欢

转载自www.cnblogs.com/aisowe/p/11641032.html