ES6学习一--ES5
JSON对象方法
1.将JSON字符串转换成js对象(IE7及以下不支持)(IE7及以下兼容需其他手段)
JSON.parse()
2.将js对象转成JSON字符串
JSON.stringify()
3.js对象深度克隆
JSON.parse(JSON.stringify(arrTwo))
Object对象方法
1.Object.create(prototype,[descriptors])
作用:以指定对象为原型创建新的对象
为新的对象指定新的属性,并对属性进行描述
-value:指定值
-writable:标识当前属性是否科修改,默认false
-configurabale:标识当前属性是否可以被删除,默认false
-enumerable:标识当前属性是否能用for in枚举,默认false
var obj={ usename:"kobe", age:18 } var obj1=Object.create(obj,{ sex:{ value:"男",//值 writable:true,//是否可修改 configurable:true,//是否可删除 enumerable:true,//是否可枚举 } }) obj1.sex="女" delete obj1.sex for (var i in obj1){ console.log(i)//属性值 }
2.Object.defineProperties(object,descriptors)
作用:为指定对象定义扩展多个属性
get:用来获取当前属性值的回调函数
set:修改当前属性值的触发的回调函数,并且实参即为修改后的值
存取器属性:setter,getter一个用来存值,一个用来取值
var obj={ usename:"kobe", age:18 } Object.defineProperties(obj,{ fullIfo:{ get:function () { return this.usename+this.age }, set:function (data){//监听扩展属性,当扩展属性发生变化的时候会自动调用 console.log(data) } } }) console.log(obj)
3.对象本身方法
get propertyName(){}用来得到当前属性值的回调函数
set propertyName(){}用来监视当前属性值的回调函数
var obj={ get fullName(){ } }
数组的扩展
1.Array.prototype.indexOf(value):得到值在数组中的第一个下标
2.Array.prototype.lastIndexOf(value):得到值在数组中的最后一个下标
3.Array.prototype.forEach(function(item,index){}):遍历数组
4.Array.prototype.map(function(item,index){}):遍历数组返回的新的数组,返回加工之后的值
5.Array.prototype.filter(function(item,index){}):遍历过滤出的一个新的子数组,返回条件为true的值
CALL,APPLY,BIND用法详解
1.Function.prototype.bind(obj)
作用:将函数内的this绑定为obj,并将函数返回
2.bind()/call()/apply()区别
传入参数的形式不同 foo.call(obj,a,b)//直接从第二个参数开始一次传入 foo.apply(obj,[a,b])//最多二个参数且第二个参数以数组的形式传递 call()和apply()会立即调用当前函数 foo.bind(this),绑定完后不会立即调用,而是将函数返回 传参方式和call()一样
bind(this)中this指向的是父级执行上下文中的this