javascript重写基类方法前调用.-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

javascript重写基类方法前调用.

function Base(){
}
Base.prototype.say = function(){
 console.log(1);
}

function Sub(){

}
Sub.prototype = new Base();
Sub.prototype.say = function(){
 //todo: 不使用__proto__调用base.say();
 console.log('2');
}
var son  = new Sub();
son.say() // Expect: log: 1,2;

请问有什么方式可以实现吗?

展开
收起
a123456678 2016-03-11 11:51:16 1951 0
1 条回答
写回答
取消 提交回答
  • function Base(){
    
    }
    Base.prototype.say = function(){
     console.log(1);
    }
    
    function Sub(){
    }
    Sub.prototype = new Base();
    (function() {
        var _say = Sub.prototype.say;
        Sub.prototype.say = function(){
         //todo: 不使用__proto__调用base.say();
         _say.call(this);
         console.log('2');
        }
    })()
    
    var son  = new Sub();
    son.say() // Expect: log: 1,2;
    2019-07-17 18:58:55
    赞同 展开评论 打赏
问答排行榜
最热
最新
相关电子书
更多
Javascript中的函数
立即下载
Javascript异步编程
立即下载
JS零基础入门教程(上册)
立即下载