// 浅拷贝 // 把父对象的属性,全部拷贝给子对象,也能实现继承 function extendCopy(p) { var c = {} for(var i in p) { c[i] = p[i]; } c.uber = p; return c; } var Doctor = extendCopy(Chinese); Doctor.career = "医生"; /
Chinese.birthPlaces = [‘北京‘,‘上海‘,‘香港‘];
var Doctor = extendCopy(Chinese); Doctor.birthPlaces.push(‘厦门‘); console.log(Doctor.birthPlaces) console.log(Chinese.birthPlaces) // extendCopy()只是拷贝基本类型的数据,我们把这种拷贝叫做"浅拷贝"。这是早期jQuery实现继承的方式。
// 深拷贝 function deepCopy(p,c) { var c = c || {}; for(var i in p) { // console.log( p[i]); if(typeof p[i] === ‘object‘) { c[i] = (p[i].constructor === Array) ? [] : {}; // console.log( c[i]); deepCopy(p[i], c[i]); }else { c[i] = p[i]; } } return c; } var Doctor = deepCopy(Chinese); Doctor.birthPlaces.push(‘厦门‘); // console.log(Doctor.birthPlaces) // console.log(Chinese.birthPlaces)