请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

请问能否直接把拓展的方法写在构造函数Elem()里,而不用.prototype?

请问能不能写成这样

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function Elem(id){
    this.elem = document.getElementById(id);
    this.html = function html(val){
        var elem = this.elem;
        if(val){
            elem.innerHTML = val;
            return this;
        }else{
            return elem.innerHTML;
        }
    }
}
 
 
var form = new Elem('form');
form.html('aaa');

我拿百度的首页试了一下  可以运行。 请问这两种方法有优劣吗?

正在回答 回答被采纳积分+3

插入代码

2回答

双越 2018-07-22 21:50:57

对于这个例子,没啥影响。但是这样写没法做到继承。例如,Object.prototype.toString 可以被所有对象继承使用,但是如果 toString 是按照你的方式来写的,那就没法被继承使用了。

1 回复 有任何疑惑可以回复我~
  • 莫非这就是所谓的组合式继承中改进了基于原型继承的缺点(prototype一改所有的实例都会发生改变)?
    回复 有任何疑惑可以回复我~ 2018-08-30 22:30:43
  • _小怪 #2
    老师,意思是不是如果不写在原型中,直接放在构造函数内部,那么能使用toString方法的只有直接由Object new的儿子对象才能使用,但是孙子对象或重孙对象就无法使用toString,通过原型操作就可以实现多继承是吗?
    回复 有任何疑惑可以回复我~ 2019-05-28 20:03:45
  • 双越 回复 _小怪 #3
    是这个意思。
    回复 有任何疑惑可以回复我~ 2019-05-28 21:21:12
qq_天道飘渺_0 2018-08-01 17:12:55

这样写的话,好像每次实例化都做一次添加,如果方法多了是不是影响性能

0 回复 有任何疑惑可以回复我~
  • 双越 #1
    理论上来说是这样的
    回复 有任何疑惑可以回复我~ 2018-08-31 10:28:48
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号