1.ES5简介
(1)新增严格模式
(2)提供JSON对象,支持序列化和反序列化
(3)新增对象接口create/defineproject/keys
(4)新增数组接口。foreach等
2.call方法的使用,传递的参数代表this的指向
例子(1)
var obj = {
type:'我是一个对象',
fn:function() {
console.log(this);
console.log(this.type); // 对象方法俩面的this指向这个对象本身
}
};
var obj1 = {
type:'我是冒充调用obj对象方法的obj1'
}
obj.fn();
obj.fn.call(obj1); // call方法其实就是改变了函数执行时的this指向 this指向第一个参数 第二个参数开始,值为传递给该函数的实参
例子(2)
var n = 0;
var o1 = {
n:1,
fn:function(a,b) {
console.log(this.n);
console.log(a+b);
}
}
var o2 = {
n:2
}
// o1.fn();//
// o1.fn.call(window);
o1.fn.apply(o2,[10,20]); // o2有了这个fn方法
//call 与apply 共同点 都可以实现方法的冒充调用(由谁调用,取决于第一个参数(对象))
//不同点 // call在调用该函数/方法的时候,传递的参数一逗号的形式作为第二个参数一次传递
//apply传递参数一数组的形式进行传递
//
3.apply方法
var obj = {
a: 1,
b: function(arg) {
console.log(this.a + arg);
}
}
var obj1 = {
a: 2
}
obj.b.apply(obj1, ['world'])//2world
4.bind方法,改变了this 的指向。第一个参数就是this的指向,如果第一个参数填this或者什么也不填,那指向就是windows
var a = 3;
var obj = {
a: 1,
fn: function(a, b) {
return this.a + a + b;
}
}
var obj2 = {
a: 2
}
var x = obj.fn.bind(obj2, 1, 2)();
console.log(x);//5
5 indexOf(元素),返回元素第一次出现的索引值,没有就返回-1
6 lastIndexOf(元素),返回元素最后一次出现的索引值,没有就返回-1
7 Array.isArray(),判断Array是不是一个数组
8 foreach方法
// forEach方法
var arr = [1,2,3,4,5];
var sum = 0;
arr.forEach(function(item) {
sum += item;
})
console.log(sum);
arr.forEach(function(item,index,obj) { //回调函数
console.log(item,index,obj);
});