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

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

 

评论关闭
IT源码网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

怎样删除对象的某个属性或方法