JavaScript学习笔记(二)
来源:互联网 发布:java高级应用课件 编辑:程序博客网 时间:2024/05/21 10:23
快速入门
对象
JavaScript的对象是一种无序的集合数据类型,它由若干键值对组成。
访问属性是通过.操作符完成的,但这要求属性名必须是一个有效的变量名。如果属性名包含特殊字符,就必须用”括起来:
var xiaohong = { name: '小红', 'middle-school': 'No.1 Middle School'};
xiaohong的属性名middle-school不是一个有效的变量,就需要用”括起来。访问这个属性也无法使用.操作符,必须用[‘xxx’]来访问:
xiaohong['middle-school']; // 'No.1 Middle School'xiaohong['name']; // '小红'xiaohong.name; // '小红'
如果访问一个不存在的属性会返回什么呢?JavaScript规定,访问不存在的属性不报错,而是返回undefined:
var xiaoming = { name: '小明'};xiaoming.age; // undefined
由于JavaScript的对象是动态类型,你可以自由地给一个对象添加或删除属性:
var xiaoming = { name: '小明'};xiaoming.age; // undefinedxiaoming.age = 18; // 新增一个age属性xiaoming.age; // 18delete xiaoming.age; // 删除age属性xiaoming.age; // undefineddelete xiaoming['name']; // 删除name属性xiaoming.name; // undefineddelete xiaoming.school; // 删除一个不存在的school属性也不会报错
不过要小心,如果in判断一个属性存在,这个属性不一定是xiaoming的,它可能是xiaoming继承得到的:
'toString' in xiaoming; // true
因为toString定义在object对象中,而所有对象最终都会在原型链上指向object,所以xiaoming也拥有toString属性。
要判断一个属性是否是xiaoming自身拥有的,而不是继承得到的,可以用hasOwnProperty()方法:
var xiaoming = { name: '小明'};xiaoming.hasOwnProperty('name'); // truexiaoming.hasOwnProperty('toString'); // false
循环
for 循环
var x = 0;var i;for (i=1; i<=10000; i++) { x = x + i;}x; // 50005000
for循环的一个变体是for … in循环,它可以把一个对象的所有属性依次循环出来:
var o = { name: 'Jack', age: 20, city: 'Beijing'};for (var key in o) { alert(key); // 'name', 'age', 'city'}
要过滤掉对象继承的属性,用hasOwnProperty()来实现:
var o = { name: 'Jack', age: 20, city: 'Beijing'};for (var key in o) { if (o.hasOwnProperty(key)) { alert(key); // 'name', 'age', 'city' }}
var a = ['A', 'B', 'C'];for (var i in a) { alert(i); // '0', '1', '2' alert(a[i]); // 'A', 'B', 'C'}
Map
Map是一组键值对的结构,具有极快的查找速度
var m = new Map([['Michael', 95], ['Bob', 75], ['Tracy', 85]]);m.get('Michael'); // 95
初始化Map需要一个二维数组,或者直接初始化一个空Map。Map具有以下方法:
var m = new Map(); // 空Mapm.set('Adam', 67); // 添加新的key-valuem.set('Bob', 59);m.has('Adam'); // 是否存在key 'Adam': truem.get('Adam'); // 67m.delete('Adam'); // 删除key 'Adam'm.get('Adam'); // undefined
由于一个key只能对应一个value,所以,多次对一个key放入value,后面的值会把前面的值冲掉:
var m = new Map();m.set('Adam', 67);m.set('Adam', 88);m.get('Adam'); // 88
set
Set和Map类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在Set中,没有重复的key。
要创建一个Set,需要提供一个Array作为输入,或者直接创建一个空Set:
var s1 = new Set(); // 空Setvar s2 = new Set([1, 2, 3]); // 含1, 2, 3
重复元素在Set中自动被过滤:
var s = new Set([1, 2, 3, 3, '3']);s; // Set {1, 2, 3, "3"}
通过delete(key)方法可以删除元素:
var s = new Set([1, 2, 3]);s; // Set {1, 2, 3}s.delete(3);s; // Set {1, 2}
iterable
遍历Array可以采用下标循环,遍历Map和Set就无法使用下标。为了统一集合类型,ES6标准引入了新的iterable类型,Array、Map和Set都属于iterable类型。
具有iterable类型的集合可以通过新的for … of循环来遍历。
var a = ['A', 'B', 'C'];var s = new Set(['A', 'B', 'C']);var m = new Map([[1, 'x'], [2, 'y'], [3, 'z']]);for (var x of a) { // 遍历Array alert(x);}for (var x of s) { // 遍历Set alert(x);}for (var x of m) { // 遍历Map alert(x[0] + '=' + x[1]);}
- JavaScript 学习笔记(二)
- JavaScript学习笔记(二)
- javascript 学习笔记(二)
- JavaScript学习笔记(二)
- JavaScript学习笔记(二)
- javascript学习笔记(二)
- Javascript学习笔记(二)
- JavaScript学习笔记(二)
- javascript学习笔记(二)
- JavaScript学习笔记(二)
- JavaScript学习笔记(二)
- JavaScript学习笔记(二)
- javaScript学习笔记(二)
- JavaScript学习笔记(二)
- javaScript学习笔记(二)
- javascript学习笔记(二)
- javascript学习笔记(二)
- javascript学习笔记(二)
- 填资料领“红包”是骗局?|频繁查询征信记录是否对征信信用有影响?
- C/C++-技巧-宏
- Github使用(1)--Github上传
- RCNN
- Import "golang.org/x/net/icmp" failed! , go语言(golang)导入Import "golang.org/x/net/icmp" failed!包失败
- JavaScript学习笔记(二)
- linux下解压不同压缩包的方法
- 拜小白一步一步教你CMake3.8.2安装教程
- Ubuntu14.04下FTP服务器的搭建配置
- Python加载带有注释的Json文件
- PhpStorm中使用post提交时,文件路径没错,浏览器却报错404 Not Found
- Android Studio的assets、raw目录详解
- popwindow 的简单实用
- JVM性能调优