本文概述
- 与typeof的比较
- hasOwnProperty
- in
- 哪种方法更快
- 与typeof和undefined比较。
- 使用hasOwnProperty方法。
- 在关键字中使用。
typeof函数返回一个以变量类型名称作为第一个参数的字符串(布尔, 对象, 未定义等)。因此, 你只需要将所需属性的值与” undefined” 进行比较。
var myObject = {hello: "Hey"};
if("undefined" === typeof(myObject["hello"])){// The property DOESN'T exists}else{// The property exists}// Or ...if(typeof(myObject.hello) === "undefined"){// The property DOESN'T exists}else{// The property exists}// Or ...if(typeof(myObject.hello) !== "undefined"){// The property exists}else{// The property DOESN'T exists}
注意:如果对象具有值为undefined的属性, 则不建议使用typeof。为避免混淆, 如果在对象中使用undefined而不是null, 请使用hasOwnProperty。
hasOwnProperty Javascript对象通常具有hasOwnProperty本机方法。 hasOwnProperty方法返回一个布尔值, 该布尔值指示对象是否具有指定的属性作为第一个参数。
与in运算符不同, 此方法不会检查对象的原型链。
var myObject = {hello: "This is my hello string"};
if(myObject.hasOwnProperty("hello")){// myObject has the hello property}else{// myObject doesn't has hello property}// Falsevar hasPropertyHello = myObject.hasOwnProperty("monkey");
// Use hasOwnProperty in arrays too using the index["hello"].hasOwnProperty(0);
// true// But no the value["hello"].hasOwnProperty("hello");
// false
in 如果指定的属性在指定的对象中, 则in运算符将返回true。请注意, 可以在对象和数组中使用。
var myObject = {hello:"Hello message"};
if("hello" in myObject){// Hello property exists}else{// Hello property exists}// Falsevar isInObject = ("trello" in myObject);
// Use in in arrays too using the index(0 in ["hello"]);
// true// But not the value("hello" in ["hello"]);
// false
哪种方法更快 如果我们真的想知道哪个更快, 则只有在使用扩展循环和大型对象时, 你才会注意到其中的区别。
根据测试, 与hasofwnProperty和in相比, 与typeof的比较似乎要快得多。
文章图片
之前的代码片段执行了1000000(1M)次, 表明in和hasOwnProperty方法所花费的时间大约是与typeof和undefined比较所需的时间的两倍。
【如何在JavaScript中检查对象是否具有正确的属性】最后, 我应该使用哪种方法?除非你使用庞大的数据集, 否则该方法无关紧要。玩得开心
推荐阅读
- 如何在Windows中使用命令提示符使用PhantomJS
- 如何使用JavaScript和jQuery检测大写锁定(大写)是否按下
- 足不出户,一探古今,打造线上3D数字博物馆!
- UNITY3D 游戏开发之八Unity编译到iPhone运行 Collider 无法正常触发事件解决方案
- iOS底层面试题(下篇)
- 开发者如何快速搭建自己的电商App?
- iOS开发面试只需知道这些,技术基本通关!(Runtime篇)
- 手语也能机器翻译了!机器学习手势识别功能了解一下
- NA嵌入Flutter页面