版本认识
- ECMA Script(ECMA组织制定)是规范,JavaScript是实现。
- ES5(2009)、ES6(2015)、ES7(2016)
- IE浏览器对ES5存在部分支持问题。
一.严格模式(‘use strict’):使得Javascript在更严格的语法条件下运行
- 变量:声明必须使用var
- 对象:属性不能重复
- 函数:自定义函数this不能指向window对象、为eval函数添加作用域
二.json:存储和交换文本信息的语法
- json.stringFy():javascript对象/数组转json文本。
- json.parse():json文本转javascript对象/数组。
三.Object扩展
- 1.Object.create(prototype, [descriptors]):以指定对象为原型创建新的对象
var obj = {firstName:"张",lastName:'三'};
var newObj = null;
newObj = Object.create(obj,{
sex:{
value:"男",
writable:true,
configurable:true,
enumerable:true
}
});
- 2.Object.defineProperties(object, descriptors):为指定对象扩展多个属性
var strongObj = {
firstName:"张",
lastName:'三',
get fullName(){
return this.firstName+this.lastName;
},
set fullName(name){
var arr = name.split("");
this.firstName = arr[0];
this.lastName = arr[1];
}
};
var obj = {firstName:"张",lastName:'三'};
var strongObj1 = {firstName:"张",lastName:'三'};
Object.defineProperties(strongObj1,{
fullName:{
get:function(){
return this.firstName+this.lastName;
},
set:function(name){
var arr = name.split("");
this.firstName = arr[0];
this.lastName = arr[1];
}
}
});
四.Array扩展
- 索引:Array.prototype.indexOf/ lastIndexOf (value)
- 遍历:Array.prototype.forEach(function(item, index){})
- 映射:Array.prototype.map(function(item, index){})
- 过滤:Array.prototype.filter(function(item, index){})
var arr = [6,2,4,6,1,6];
console.log(arr.indexOf(6),arr.lastIndexOf(6));
arr.forEach(function(item){console.log(item)});
console.log(arr.map(function(item){return item+10}));
console.log(arr.filter(function(item){return item>4}));
五.Function扩展
- Function.prototype.bind(obj):将函数内的this绑定为obj, 并将函数返回
- 区别bind、call和apply:从 是否立即执行、传参方式来区分
function fn(param){
console.log(this,param);
}
var obj = {name:"张三"};
fn("param");
fn.call(obj,"call_param");
fn.apply(obj,["apply_param"]);
fn.bind(obj,"bind_param")();//不会立即执行,常用在回调函数。