JavaScript数据类型继续学习
JavaScript继续学习
1.对象
若干个键值对定义对象的属性,用{}包起来

用 'var' 定义对象,键值对描述属性xxx:xxx,多个属性之间使用逗号隔开,最后一个属性不加逗号!
(注:JavaScript中所有的键都是字符串,值是任意对象)
1.对象赋值

在浏览器Console可以直接赋值修改
2.使用一个不存在的对象属性,不会报错!只会出现 undefined

3.动态的删减属性
delete person.name
true
person
4.动态的添加,直接给新的属性添加值就可以生成了

5.诊断属性值是否在这个对象中'xxx' in xxx
属性要用''包起来

6.判断一个属性是否是这个对象自身拥有的hasOwnProperty('toString')

2.流程控制
if 判断

for循环
for(let i=0;i<100;i++){
comsole.log(i)
}
这里和Java中的一样只有局部变量的声明用的是let
forEach循环
var age=[12,3,12,3,12,3,12,31,23,123];
//函数,其实和Java中的方法一样的
age.forEach(function (value){
console.log(value)
})
这是个专门遍历数组的函数,依次把每个数值赋给value
for...in
for循环的一个变体是for ... in循环,它可以把一个对象的所有属性依次循环出来:
var o = {
name: 'Jack',
age: 20,
city: 'Beijing'
};
for (var key in o) {
console.log(key); // 'name', 'age', 'city'
}
//for(var index in object),定义变量in对象
for(var num in age){
if(age.hasOwnProperty(num)){
console.log("存在")
console.log(age[num])
}
}
//要过滤掉对象继承的属性,用hasOwnProperty()来实现:
var o = {
name: 'Jack',
age: 20,
city: 'Beijing'
};
for (var key in o) {
if (o.hasOwnProperty(key)) {
console.log(key); // 'name', 'age', 'city'
}
}
这种我们可以用于不知道数组的具体长度时,num会从0开始一直到数组长度减1,就是下标
这样我们可以通过num直接遍历数组
3.Map和Set
Map:
//ES6 Map这是es6的新特性
//学生成绩,学生名字
//var name=["tom","jack","locy"];
//var score=[100,90,80]
var map=new Map([['tom',100],['jack',90],['locy',80]]);
var name=map.get('tom');//通过key获得value
map.set('admin',1234);//新增成员,或者修改
map.delete("tom");//删除
//初始化Map需要一个二维数组,或者直接初始化一个空Map。Map具有以下方法:
var m = new Map(); // 空Map
m.set('Adam', 67); // 添加新的key-value
m.set('Bob', 59);
m.has('Adam'); // 是否存在key 'Adam': true
m.get('Adam'); // 67
m.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.add(2);//添加
set.delete(1);//删除
console.log(set.has(3));//是否包含某个元素![img]
/*Set
Set和Map类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在Set中,没有重复的key。*/
//要创建一个Set,需要提供一个Array作为输入,或者直接创建一个空Set:
var s1 = new Set(); // 空Set
var 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"}
//注意数字3和字符串'3'是不同的元素。
//通过add(key)方法可以添加元素到Set中,可以重复添加,但不会有效果:
s.add(4);
s; // Set {1, 2, 3, 4}
s.add(4);
s; // 仍然是 Set {1, 2, 3, 4}
//通过delete(key)方法可以删除元素:
var s = new Set([1, 2, 3]);
s; // Set {1, 2, 3}
s.delete(3);
s; // Set {1, 2}
4.iterator



其实就是for(let index of object),这个可以直接遍历不像for in是遍历下标再通过下标遍历对象
然而,更好的方式是直接使用iterable内置的forEach方法,它接收一个函数,每次迭代就自动回调该函数。以Array为例:
'use strict';
var a = ['A', 'B', 'C'];
a.forEach(function (element, index, array) {
// element: 指向当前元素的值
// index: 指向当前索引
// array: 指向Array对象本身
console.log(element + ', index = ' + index);
});
```Set与Array类似,但Set`没有索引,因此回调函数的前两个参数都是元素本身:
var s = new Set(['A', 'B', 'C']);
s.forEach(function (element, sameElement, set) {
console.log(element);
});
Map的回调函数参数依次为value、key和map本身:
var m = new Map([[1, 'x'], [2, 'y'], [3, 'z']]);
m.forEach(function (value, key, map) {
console.log(value);
});
如果对某些参数不感兴趣,由于JavaScript的函数调用不要求参数必须一致,因此可以忽略它们。例如,只需要获得Array的element:
var a = ['A', 'B', 'C'];
a.forEach(function (element) {
console.log(element);
});
``
这里推荐一个学习Java和JavaScript的网站,免费的里面有Java和JavaScript的详细教程,适合平时没事的时候看一看
JavaScript的数据类型这里就学完了,下面会学习函数及面向对象

浙公网安备 33010602011771号