数组

如果给数组操作符的是一个非整形数值,那么将作为一个代表数组的对象的属性(property)创建,而非作为数组的元素
例如:a[2.2] = "2"
那么得到的结果将是arr.hasOwnProperty(2.2)为true

如果给数组分配length属性,写一个小于数组元素数量的值会缩短数组,写0会彻底清空数组

在数组定义时省略的元素不会在forEach遍历时被列出,但是手动赋值为undefined的元素是会被列出的:

var value = new Map() map的建可以是任意数据类型,而Object的键全部是string
value.set() value.get() value.delete() value.size value.has()

vat value1 = new Set()
value1.add() value1.has() value1.delete() value1.size

对于set集合 可以使用Array.from或展开操作符来完成集合到数组的转换,同样,Set的构造器接受数组作为参数,可以完成从Array到Set的转换
var set = new Set()
set.add("1")
set.add("2")
var arr = [...map] //通过扩展运算符  完成集合到数组
var arr =Array.from(map) //通过Array.from  完成集合到数组
mySet2 = new Set([1,2,3,4]) //完成数组到集合

对象的创建: Object.create()   该方法可以允许指定其原型对象 

生成器可以调用throw()方法抛出错误
function *fibonacci(){
  var fn1 =0
  var fn2 = 1
  while(true){
    var current = fn1
    fn1 = fn2
    fn2 = current + fn1
    var reset = yield current
    if(reset){
      fn1 =0
      fn2 =1
    }
  }
}
  var sequence = fibonacci()
  console.log(sequence.next().value)
  console.log(sequence.next().value)
  console.log(sequence.next().value)
  console.log(sequence.throw("nvu9ewve")) //Exception: nvu9ewve

代理:Proxy
let handler={
  get:function(target,name){
      if(name in target){
        return target[name]
      } else{
        return 42
      }
  }
}
var hand = new Proxy({},handler) //代理
hand.a =1
console.log(hand.a) //1
console.log(hand.b) //42
撤销代理:
用var hand = Proxy.revocable({},handler)来创建一个可销毁的Proxy     

使用hand.revoke() 来销毁  销毁之后在代理对象上进行任何操作都会报错

类数组

索引(数字)为属性, 必须有length属性,最好加上Push

var obj = {
"0": '0',
"1", '1',
"length": 2, // 必须
"push", Array.prototype.push,
"splice": Arrat.prototype.splice,
}


像上面这个样子就是类数组


push原理:
Array.prototype.push = function (value) {
this[this.length] = value
this.length ++ 
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值