构造函数&&实例
- 构造函数: 通过new操作符调用的,本质上也是函数
- 实例: 实例是通过new操作符调用函数生成的,如下面代码,p就是实例
let p = new Obj()
- 通过new操作符可以创建一个构造函数,将这个构造函数赋值给一个变量,这个变量就是实例
原型&&原型链
- 原型: js函数中的protype属性,称之为原型也叫原型对象,可以存放一些方法给实例使用.原型是函数所特有的
- 原型链: 对象都有__proto__属性,这个属性指向他的原型对象,原型对象上也有__proto__属性,之后会接着指向下一个原型对象,这样形成的叫做原型链,找到最后找不到会返回null
new的过程
- 创建一个新的对象
- 新对象的__proto__指向构造函数的protype
- 构造函数的this指向新对象
- 执行构造函数内部代码
- 返回新对象
修改this指向
call
- 功能: 修改this指向,并立即执行函数
- 以数组形式传递
apply
- 功能: 修改this指向,并立即执行函数
- 以逗号分隔的方式传递
bind
- 功能: 修改this指向后不会立即执行函数
- 以数组形式传递
// 修改fn2的this指向到{a:1}对象上
obj.obj1.obj2.fn2().call({a: 1},[传递的参数1])
obj.obj1.obj2.fn2().apply({a: 1},传递的参数1,传递参数2)
obj.obj1.obj2.fn2().bind({a: 1},[传递的参数1])()
cooki,localStorage和sessionstorage
- cooki:
- 功能: 本身是用于服务器和浏览器通讯的
- 缺点: 存储量小只有4K,且每回都会发送到服务器
- localStorage && sessionstorage
- 功能: 用来进行本地存储的,最大可存储5M
- 相比于cooki,storage存储量变大了,且不会随着请求发送出去
- localStorage: 永久存储, 除非手动清除
- sessionstorage: 只存在于当前会话,浏览器或页面关闭就会清空
for in && for of
- for in 会遍历数组的所有可枚举属性,遍历后得到的是对象的key,或数组/字符串的下标
- for of 遍历后得到的是value值,可以遍历数组,字符串等拥有迭代器对象的集合,但不能遍历对象,因为对象没有迭代器对象
let arr = ['a', 'b', 'c', 'd']
let obj = {
a: 'apple',
b: 'banana',
c: 'cindy'
}
for (let key in arr) {
console.log(key);
console.log(arr[key]);
}
for (let key in obj) {
console.log(key);
console.log(obj[key]);
}
for (let key of arr) {
console.log(key);
console.log(arr[key]);
}