js属性检测

<span style="font-family: Arial, Helvetica, sans-serif;">var obj = {</span>
    'x' : 'xxx',
    'y' : 2
};
var yz = obj && obj.k && obj.k.z;//这样就不会报错,如果没有定义会返回undefined
console.log(yz);//undefined
yz = obj && obj.x;
console.log(yz);//xxx

in出来的是所有原型链上属性,hasOwnProperty()出来的是不包括原型链上的属性,遇到for循环枚举的话就要看是否可枚举PropertyIsEnumerable(),getOwnPropertyDescriptor()是个很不错的方法哦

var obj = {
    'x' : 'xxx',
    'y' : 2
};
console.log('x' in obj);//true
console.log('toString' in obj);//true

console.log(obj.hasOwnProperty('x'));//true
console.log(obj.hasOwnProperty('toString'));//false
console.log(obj.propertyIsEnumerable('x'));//true
console.log(obj.propertyIsEnumerable('toString'));//false

Object.defineProperty(obj,'z',{enumerable : false, value : 'zzz'});
for(var item in obj){
    console.log('item---' + item);//x y(因为原型链上的其他属性不可枚举,所以只输出x y)
}
console.log('z' in obj);
console.log(Object.getOwnPropertyDescriptor(obj,'x'));//看看这个描述器里边有哪些标签

时间: 2024-12-12 12:55:03

js属性检测的相关文章

JS 中检测数组的四种方法

今天和大家分享一下 JS 中检测是不是数组的四种方法,虽然篇幅不长,不过方法应该算是比较全面了. 1. instanceof 方法 instanceof 用于检测一个对象是不是某个类的实例,数组也是一种对象所以也可以利用 instaceof 来进行判断. let arr = [1, 2, 3]; console.log(arr.instanceof(Array)); // true 这种方法在只有一个全局作用域的环境下是可以的,但是如果一个网页中包含多个框架,那么就会存在不同的全局环境,不同的环

解决777属性检测不通过

文件或文件出现解决777属性检测不通过,需要通过ftp解决 1.ftp连接服务器 2.选中文件夹右键修改属性 3.都勾选,或者把xxx换成777,然后递归子目录 即可

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.hasO

js属性扩展,继承,属性查找

JavaScript 是一种基于原型的面向对象语言 在 javaScript 中,每个对象都有一个它的原型(prototype)对象的引用,这个原型对象又有自己的原型,直到某个对象的原型为 null 为止,这种一级一级的链结构就称为原型链(prototype chain).比如 定义一个object对象var o={},它的原型为Object.prototype,而Object.prototype的原型为null 下面为示例代码 <script type="text/javascript&

做webapp 使用JS来检测游览器是什么类型,或android是什么版本号

此文转自我的www.gbtags.com社区的文章. 做webapp还是微信游戏,特别是canvas,android上不同机器不同版本区别还是很大的.其实,我今天写了这个js,主要是来做js判断游览器类型,特别使用在android的和widnows phone上的 var brower = { versions:function(){ var u = window.navigator.userAgent; var num ; if(u.indexOf('Trident') > -1){ //IE

JS完整检测并获取IE浏览器信息

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"><head> <meta content="text/html; charset=utf-8" http-equiv="Content-Type"> <meta content="no-transform" http-equiv="Cache-

如何使用JS来检测游览器是什么类型,或android是什么版本号- 转载

var brower = { versions:function(){ var u = window.navigator.userAgent; var num ; if(u.indexOf('Trident') > -1){ //IE return "IE"; }else if(u.indexOf('Presto') > -1){ //opera return "Opera"; }else if(u.indexOf('Gecko') > -1 &a

js对象中的属性检测

最近项目里遇到一个问题,页面加载时候对window对象进行渲染,渲染过程中对window增加了一个对象obj,之后又加载一个文件,向obj增加了一个属性para,但这个过程是异步的. 之后需要检测window是否有obj对象,而obj对象是否有para属性.由于是异步的.执行这个操作时候可能并没有渲染至para上,这时候需要使用if..else..进行另一套操作. 这时候遇到一个问题,如何判断window对象是否有obj对象,且obj对象是否有para属性? 之前使用的是'obj' in win

js如何检测一个属性是否在json对象里

1, in运算符2, hasOwnProperty()3, != undefined //检测o对象里是否有属性a var o={a:1,b:2,c:3}; console.log("a" in o); console.log(o.hasOwnProperty("a")); console.log(o.a != undefined);