首页 话题 小组 问答 好文 用户 我的社区 域名交易

[教程]检查某对象是否有某属性

发布于 2024-09-12 13:15:26
0
93

当你需要检查某属性是否存在于一个对象,你可能会这样做:

var myObject = {
  name: '@tips_js'
};


if (myObject.name) { ... }

这是可以的,但是你需要知道有两种原生方法可以解决此类问题。in 操作符 和 Object.hasOwnProperty,任何继承自Object的对象都可以使用这两种方法。

看一下较大的区别

var myObject = {
  name: '@tips_js'
};

myObject.hasOwnProperty('name'); // true
'name' in myObject; // true


myObject.hasOwnProperty('valueOf'); // false, valueOf 继承自原型链
'valueOf' in myObject; // true

两者检查属性的深度不同,换言之hasOwnProperty只在本身有此属性时返回true,而in操作符不区分属性来自于本身或继承自原型链。

这是另一个例子

var myFunc = function() {
  this.name = '@tips_js';
};
myFunc.prototype.age = '10 days';

var user = new myFunc();

user.hasOwnProperty('name'); // true

user.hasOwnProperty('age'); // false, 因为age来自于原型链
评论
风轻y
Lv.1种子选手

236

帖子

19

小组

135

积分

站长交流