面试(一)

浅谈JS继承与模块化
浅拷贝
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:依赖关系前置,提前将当前模块所依赖的所有模块提前加载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值