當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
JavaScript中四种不同的属性检测方式比较
生活随笔
收集整理的這篇文章主要介紹了
JavaScript中四种不同的属性检测方式比较
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
JavaScript中四種不同的屬性檢測方式比較
1. 用in方法
var o = {x:1}; "x" in o; //true "y" in o; //false "toString" in o; //true,繼承屬性可以被檢測到 "toString" in Object.prototype; //true,不可枚舉的屬性可以被檢測到?
?2. hasOwnProperty()方法
var o = {x:1}; o.hasOwnProperty("x"); //true o.hasOwnProperty("y"); //false o.hasOwnProperty("toString"); //false,無法檢測繼承屬性 Object.prototype.hasOwnProperty("toString"); //true,不可枚舉的屬性可以被檢測到3. propertyIsEnumerable()方法
var o = Object.create({y:2}); o.x = 1; o.propertyIsEnumerable("x"); //true,x是可枚舉的屬性 o.propertyIsEnumerable("y"); //false,繼承屬性,不可枚舉 Object.prototype.propertyIsEnumerable("toString"); //false,不可枚舉的屬性無法被檢測?
4. !== undefined方法
var o = {x : 1}; o.x !== undefined; //true,o中有屬性x o.toString !== undefined; //true,繼承屬性也可以被檢測到這種方法的一個弱點是,無法區分不存在的屬性和存在但值為undefined的值,如:
var o = {x : undefined}; o.x !== undefined; //false "x" in o; //true注意這里用的是"!=="而不是"!=",因為"!=="可以區分undefined和null。?
但有時候不用區分"null"和"undefined",只要判斷一個屬性不是null或undefined即可。
繼承屬性是不可枚舉的,所以能檢測繼承屬性的,肯定也能檢測到不可枚舉屬性。?
×表示無法檢測,√表示可以檢測
| in | √ | √ |
| hasOwnProperty | √ | × |
| propertyIsEnumerable | × | × |
| !== | √ | √ |
轉載于:https://www.cnblogs.com/menyiin/p/7435755.html
總結
以上是生活随笔為你收集整理的JavaScript中四种不同的属性检测方式比较的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: etc卡片怎么插
- 下一篇: gradle idea java ssm