您的位置:首页 > Web前端 > JavaScript

js实现复制对象、扩展对象 方法

2018-03-04 13:22 871 查看
jquery里有extend方法来扩展对象,但如果我们只用js,怎么来实现扩展对象呢?

不废话直接上代码,看了就懂。

源代码:

//******** 深复制对象 ********
function cloneObj(oldObj) {
if(typeof(oldObj) != 'object'){return oldObj;}
if(oldObj == null){return oldObj;}
var newObj = new Object();
for(var key in oldObj){
//若newObj.key = oldObj[key]则不行,因为这里key是变量
newObj[key] = oldObj[key];
}
return newObj;
};

//******** 扩展对象 ********
function extendObj() {
if(arguments.length < 1){return 0;}
var tempobj = cloneObj(arguments[0]); //调用复制对象cloneObj方法
for(var n = 1;n < arguments.length;n++){
for(var key in arguments
){
tempobj[key] = arguments
[key];
}
}
return tempobj;
};

//******** 测试 扩展对象 ********
//让obj3继承obj1和obj2
var obj1 = {name:"bty",age:12};
var obj2 = {sex:"boy"};
var obj3 = extendObj(obj1,obj2);
console.log(obj3.age); //12

//******** 测试 复制对象 ********
var obj2 = cloneObj(obj1);//深复制对象
obj1.name = "ssh";//修改obj1.name值,但下面obj2.name值不变
console.log(obj2.name);   //bty


注:这里我们写方法的时候,不要用Array.prototype.name 的形式,因为上面cloneObj方法中我们涉及到了for-in遍历,如果用了改写原型的方式写方法,遍历时会把原型的方法也遍历进去,这不是为我们想要的结果。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息