浅拷贝
function extend(sub, sup) {
for(var i in sup) {
sub[i] = sup[i]
}
}
var a = {};
var b = {c:1, d:2}
extend(a, b);
继承
var people = function() {
this.name = 'lmh';
}
people.prototype.getName = function() { return this.name};
var man = function() {
this.sex = 'male';
people.call(this);
}
/* 此方式可实现继承,但存在以下问题
1. man的构造函数constructor指向到了people.prototype
2. 但在团队开发中,若有成员重写了people的属性name,则会影响man的属性,因此可造成父类被修改,子类无法使用的情况
*/
man.prototype = people.prototype;
// 正确的方式应为:
man.prototype = new people();
man.prototype.constructor = man;
组件化
组件化通常使用require.js和sea.js,这两个东西分别遵循的是两个不同的规范
CMD:按需加载,当模块被使用时去加载
AMD:依赖关系前置,提前将当前模块所依赖的所有模块提前加载