9) Promise
对异步操作进行封装。
状态:待定、成功、失败
1) 构造函数
let p = new Promise((resolve,reject)=>{
})
2) 静态方法
Promise.xxx
3) 实例方法
Promise.prototype.xxx
ajax
GET /carousel/findAll HTTP/1.1
Authorization:XXWEREAWFEWAFAEW
10) Symbol
函数,无法使用new来调用,每次执行都可以产生式一个唯一的值(基本数据类型),这个值用来作为属性名。
let s1 = Symbol()
let s2 = "name"
let obj = {
[s1]:"terry", // 神秘的唯一值:"terry"
[s2]:"tom" , // name:"terry"
s3:"jacky" // s3 :"jacky"
}
obj[s1]
obj.name
obj.s3
1. Symbol() 函数
用来产生唯一值
2. Symbol(flag)
flag字符串,表示标识
3. Symbol.for(flag)
4. Object.getOwnPropertySymbols()
可以获取某个对象中所有的symbol属性名
5. 系统内置Symbol
1) Symbol.hasInstance
所有的构造函数都内置这么个方法,当instanceof的时候会调用
let obj = {
[ Symbol.hasInstance]:function(o){
return false
}
}
let o = {}
{} instanceof obj;
2) Symbol.iterator
当迭代对象的时候会被调用 for-of
for(let o of arr){}
11) 集合
是对数组和对象的拓展
1. Set
不可以存放相同的值,不可以通过索引来访问。Set是一种特殊的map
let arr = [1,2,3,4,5,1,2,3]
let arr = ['terry','larry']
1) 构造函数
new Set()
2) 原型
Set.prototype.size
Set.prototype.add()
Set.prototype.delete()
Set.prototype.clear()
Set.prototype.keys()
Set.prototype.values()
Set.prototype.entries()
Set.prototype.forEach()
2. Map
键值对,键可以为任意数据类型;
Map可以提供额外的api
购物车(家政)
goods
id name price
fbm = {1 北京方便面 2}
kqs = {2 怡宝矿泉水 2.5}
let shopcar = new Map();
shopcar.set(1,1)
shopcar.set(2,3)
如何将一个对象转换为map?
1) 构造函数
let map = new Map([[],[]])
2) 原型方法
12) 代理
1. 对象 setter/getter
let obj = {} // 目标对象
let proxy = new Proxy(obj, { // 代理
set(target,key,val){
target[key] = val;
},
get(target,key){
return target[key]
}
})
proxy.name = 'terry' // 面向代理使用
2. 函数 apply
let foo = function(msg){console.log(msg);}
let proxy = new Proxy(foo, {
apply(target,that,args){
target.apply(that,args)
}
})
3. 构造函数 constructor
let Person = function(name){this.name = name}
let proxy = new Proxy(Person,{
constructor(target,args){
return new target(...args)
}
})
ES6 day3
最新推荐文章于 2024-10-07 09:44:36 发布