直接定义自身属性和扩展原型的属性具体使用区别?

来源:15-12 原型和原型链-解答2-写一个贴近实际开发原型链继承的例子

宇xixi

2017-08-10

如下代码,不在原型中扩展,而是把html、on 直接定义在Elem函数中,功能也能实现。这样对比在原型中扩展有何缺陷?或者不足?

function Elem(id) {
    this.elem = document.getElementById(id);

    this.html = function (val) {
        var elem = this.elem;
        if (val) {
        elem.innerHTML = val;
            return this;  //用于链式操作,让程序更健壮
        } else {
            return elem.innerHTML;
        }
     }

    this.on = function (type, fn) {
        var elem = this.elem;
        elem.addEventListener(type, fn);
        return this; //用于链式操作
    }
}


写回答

1回答

双越

2017-08-11

如果没有继承关系,你是看不出来的。j假如,Object.prototype.toString 这个方法也像你的定义方式一样,咱们还能方便的使用 toString 吗

1
3
双越
回复
黄先生新来的
这样也可以。不过你别忽略了程序这个东西是随时都可能变化的,因此要保证扩展性,一层继承关系很可能明天就变成两层,因此尽量放在原型中
2017-08-12
共3条回复

BAT大牛带你横扫初级前端JavaScript面试(第二版)

BAT高级前端工程师亲授,结合真实面试题,提高面试成功几率

4268 学习 · 817 问题

查看课程