自学js第十天:JS对象和this和执行上下文( 六 )


构造函数用于创建一类对象,首字母要大写 。构造函数要和new一起使用才有意义 。
new在执行时会做四件事情
1 创建一个空对象,作为将要返回的对象实例化 。2 将空对象的原型指向了构造函数的prototype属性 。(指针引用)3 将空对象赋值给构造函数内部的this关键字 。(this成为当前对象)4 开始执行 构造函数内部的代码 。
九.对象集合的遍历和增删查改 1.增删查改:
var obj = {}; obj.name = 'object1'; //对象增加属性.(java不可以这么干,js可以,没有该属性直接当成增加属性)obj.name = 'object1'; //对象修改属性.obj['name'] = 'object'; //查询对应key名,的value.delete obj.naem; //删除对象属性
1.遍历对象的属性. (遍历)一般通过for…in语法可以直接遍历一个对象
ps:注意以下三种写法的区别:
.log(obj.a); //直接把a当成键名key了,然后去查询并输出对应的value.
.log(obj[‘a’]); //这里和上一行一样是指: 查询对象中的key属性a的value
.log(obj[a]); //而这里是指: 找a变量的的字面值作为键名key,然后再key输出对应的value,如果a变量未声明则报错,一般用于对象遍历时使用.特定模板
//复习arr数组如何遍历的:var suspects = ['张三', '李四', '王五', '赵六']; //4 //1.普通for循环for (var i = 0; i < suspects.length; i++) {// 0 - 3 console.log( suspects[i]);if (suspects[i] === '王五') {console.log('就是他:'+ suspects[i] + ","+ (i+1) + '号嫌疑人');}}//2.ES6: for idx in有可能乱序 (下标变为idx)for (var idx in suspects) {console.log(idx, suspects[idx]);}/* 0 张三1 李四2 王五3 赵六 *///3.ES6: for item of(不推荐,es6讲为什么有undefined))for (var item of suspects) {console.log(item , suspects[item]);}/* 张三 undefined李四 undefined王五 undefined赵六 undefined *///对象的遍历 ,不能用普通for了,因为没有下标../* 数组VS对象:1.数组 是有序的元素集合 有长度 有下标 0 1 2 3 4....对象 是无序的元素的集合 没有长度 没有下标.2.arr[idx]是指:查询数组对应的idx下标obj['key']是指:查询对象中的key属性的value, 这个而实际等于 obj.key的*///案例1: 提前了解知识点.var obj = {a: 1,b: 2,c: 3}obj.b = 5;console.log(obj.b); //修改为5obj['b'] = 100;console.log(obj.b); //这种也可以修改为100//ps:注意以下三种写法的区别:console.log(obj.a);//直接把a当成键名key了,然后去查询并输出对应的value.console.log(obj['a']); //这里和上一行一样是指: 查询对象中的key属性a的value console.log(obj[a]); //而这里是指: 找a变量的的字面值作为键名key,然后再key输出对应的value,如果a变量未声明则报错,一般用于对象遍历时使用.特定模板//案例2: for..in进入对象遍历,特定模板.var obj = {a: 1,b: 2,c: 3}for (var key in obj) {console.log(key, obj[key]);key 属性名称 obj[key] 属性值 key 变量存储的是字符串 'a' 'b' 'c'//以下两种写法是不对的遍历输出写法,上面有案例解释为什么?.//console.log(key, obj.key);//声明了,但也是输出undefined//console.log(key,obj['key']);//声明了,但也是输出undefined}/* a 1b 2c 3 */
2.删除对象的属性:(删除之后,再输出不会报错只是)
function fun() { this.name = 'mm';}var obj = new fun(); console.log(obj.name); // mm delete obj.name;console.log(obj.name); // undefined
十.JSON (只能存 js数据文件格式) 1.JSON概念:
JSON即对象表示方法 () ,也就是通过字面量来表示一个对象: