JavaScript基础之对象属性的检测和枚举
属性检测
对象作为属性的集合,属性又包括自有属性和继承属性;
检测方法:
\__ in运算符:
\__ var obj = { x:1 }
console.log( 'toString' in obj ) // true # 检测继承属性,继承自Object.prototype这一原型
console.log( 'x' in obj ) // true #检测自有属性
\__ hasOwnProperty:
\__ var obj = { x:1 }
console.log( obj.hasOwnProperty( 'toString' ) ) // false # 检测继承属性失败
console.log( obj.hasOwnProperty( 'x' ) ) // true #检测自有属性
\__ propertyIsEnumerable:
\__ var obj = { x:1 }
console.log( obj.propertyIsEnumerable( 'toString' ) ) // false # 检测继承属性失败
console.log( obj.propertyIsEnumerable( 'x' ) ) // true #检测自有属性,且是显式属性
结论:in运算不仅可以检测自有属性,还可以检测继承属性,其余两种方法仅能检测自有属性,它们之间的区别又由 存取器属性 来界定,暂且不谈
对象的自有属性可以被枚举,如果要设置不可枚举可使用存取器属性。
枚举方法:
\__ for/in:
\__ var obj = { x : 1 , y : 2 }
obj.propertyIsEnumerable( 'toString' ) // false #不可枚举,ES5标准赋予
console.log( 'toString' in obj ) //true #注意,for/in搭配起来用属性的可枚举特性才会生效
for ( key in obj )
console.log( key ) // x , y
JavaScript基础之对象属性的检测和枚举的更多相关文章
- JavaScript 基础回顾——对象
		
JavaScript是基于对象的解释性语言,全部数据都是对象.在 JavaScript 中并没有 class 的概念,但是可以通过对象和类的模拟来实现面向对象编程. 1.对象 在JavaScript中 ...
 - javascript基础(六)对象
		
原文http://pij.robinqu.me/ JavaScript Objects 创建对象 对象直接量 var o = { foo : "bar" } 构造函数 var o ...
 - javascript基础-js对象
		
一.js对象的创建 1.普通最简单的方式 var teacher = new Object( ); teacher.name = "zhangsan"; teacher.age = ...
 - 【Javascript 基础】对象
		
1 创建对象 Javascript 支持对象的概率.有多种方法可以用来创建对象. <!DOCTYPE html> <html lang="en"> < ...
 - javaScript基础-04 对象
		
一.对象的基本概念 对象是JS的基本数据类型,对象是一种复合值,它将很多值(原始值或者对象)聚合在一起,可通过名字访问这些值,对象也可看做是属性的无序集合,每个属性都是一个名/值对.对象不仅仅是字符串 ...
 - JavaScript基础函数的属性:记忆模式(019)
		
函数在Javascript里是有属性的,因为它们是一种特殊对象.事实上,就算是没有明确声明,函数在最初就已经包含了一些固有的属性,比如所有函数都length这个属性,它可以指出函数声明了多少个参数: ...
 - javascript基础知识-对象
		
javascript创建对象有三种方法: 1)对象直接量 例:var empty = {}; var point = {x:1,y:4}; var book = { "main title& ...
 - JavaScript基础--DOM对象(十三):(windows对象:history\location\navigator\screen\event)
		
DOM编程1.为什么要学习DOM(1) 通过dom编程,我们可以写出各种网页游戏(2)dom编程也是ajax的重要基础2.DOM编程介绍DOM = Document Object Model(文档对象 ...
 - JavaScript基础--DOM对象加强篇(十四)
		
1.document 对象 定义:document对象代表的整个html文档,因此可以去访问到文档中的各个对象(元素)document重要的函数 1.1 write 向文档输出文本或js代码 1.2 ...
 
随机推荐
- 历史命令与实时记录(redhat6.8)
			
历史命令与实时记录(redhat6.8) linuxshell 2018年02月13日 10时58分53秒 参数 HISTTIMEFORMAT HISTSIZE HISTFILESIZE HISTFI ...
 - leetcode python 042收集雨水
			
'''给定n个非负整数表示每个条的宽度为1的高程图,计算下雨后能够捕获多少水.例如,鉴于[0,1,0,2,1,0,1,3,2,1,2,1],返回6.这个题要先算出盛满水后的高程图,减去前者就是雨水.盛 ...
 - 用usecase获取需求的方法是否有缺陷,还有什么地方需要改进
			
usecase的局限性 对于系统发展而言,Use Case的范围限制一个单一的系统,这是Use Cases最通常的形式,我们称之为System Use Case,它把整个系统看作是一个黑盒,它不指定任 ...
 - 验证GridControl  Gridview 单元格。
			
一般的验证方法,使用单元格值改变事件.现在记录另一个事件实现验证. 场景:控制当某个单元格的值的长度不能超过10 直接看代码: private void gridViewFileContent_Val ...
 - Oracle数据库 Synonym和DBLink
			
1.1数据库创建同义词(synonym) Oracle的同义词(synonyms)从字面上理解就是别名的意思,和视图的功能类似,就是一种映射关系.它可以节省大量的数据库空间,对不同用户的操作同一张表没 ...
 - Jsの练习-数组其他常用方法 -map()  ,filter() ,every() ,some()
			
map() :映射,对数组中的每一项运行给定函数,返回每次函数调用结果组成的函数. <!DOCTYPE html> <html lang="en"> < ...
 - Java第一个程序之HelloWorld
			
代码实现如下图: 讲解: 1.主方法入口main():public static void main(string[] args){}是Java应用程序执行的入口点,必须提供该方法才能被执行: 2.打 ...
 - 20175224 2018-2019-2 《Java程序设计》第三周学习总结
			
教材学习内容总结 编程语言发展的几个阶段 面向机器语言 面向过程语言 面向对象语言 封装性 继承性 多态性 类 类是Java程序的基本要素,一个Java应用程序就是由若干个类所构成的. 类是Java语 ...
 - python flask route中装饰器的使用
			
问题:route中的装饰器为什么感觉和平时使用的不太一样,装饰器带参数和不太参数有什么区别?被修饰的函数带参数和不带参数有什么区别? 测试1:装饰器不带参数,被修饰的函数也不带参数. def log( ...
 - letCode-1
			
日前,使用暴力法破解此题,认为这是很简单的算法,但是所有人都能想出来的算法,凭什么优秀?所以在看到了大神“Grandyang”的博客上精妙的解法,实在是认为自己需要修炼,在此写在这里是为了做笔记,加深 ...