JavaScript对象继承(2)

对象序列化

JSON.stringify(obj);对象转换为满足JSON格式的字符串

JSON.parse(str);将字符串解析为对象


扩展union方法

//extend方法


function extend(o,p){

for(prop in p){

o[prop]=p[prop];

}

return o;


}

//union方法


function union(o,p){

return extend(extend({},o),p);


}

//任意数量数组合并

someArray.reduce(union)



数组的方法


forEach()

map()

filter()

reduce()

every(),some()


indexOf()


//查找一个数组中含有该元素的所有索引


function findAll(a,x){

var len = a.length,

pos = 0,

res = [];

while(pos<len){

pos = a.indexOf(x,pos);

if(pos==-1) break;

res.push(pos);

pos+=1;

}

return res;

}

findAll([1,2,3,55,2,1,2,3,4,1],1)

//[0, 5, 9]


Array.isArray(arr);//判断arr是不是数组


closure闭包

函数在它所在那个作用域内被定义,则能够访问它所在那个作用域的变量


函数申明,会被提前

function myFunc(){}

函数表达式,赋值不会被提前

var myFunc = function(){}


函数调用的几种方式

- 作为函数

- 作为方法

- 作为构造函数

- call和apply被间接调用


方法调用和函数调用重大的区别就是上下文

方法调用this指向调用方法的对象

函数调用非严格模式下指向全局对象,严格模式下指向undefined