Javascript 如何将函数添加到具有继承性的现有函数

Javascript 如何将函数添加到具有继承性的现有函数,javascript,inheritance,Javascript,Inheritance,目前正在学习javascript,仍然坚持继承。问题: 如何使用不同的文本aka-var text将delay函数从first函数继承到second var first = (function () { var text = "test!"; return { delay: function(time) { setTimeout(function() { alert(text); }, time) } }

目前正在学习javascript,仍然坚持继承。问题: 如何使用不同的文本aka-
var text将
delay
函数从
first
函数继承到
second

var first = (function () {
    var text = "test!";
    return {
      delay: function(time) {
        setTimeout(function() {
        alert(text);
      }, time)
    }
    }

})();


first.delay(400);
second.delay(1000); 

function second() {
    var text = 'second';
}
我是否需要先使用
原型。延迟。调用(这次)
?我想不出来。
或者我需要像这样创建延迟函数:
first.prototype.delay=function(time){…}等等我如何实现这一点?我想我可以用不同的方法来做…

你可能想仔细看看。在这方面,继承并没有真正帮助您,因为您无论如何都需要一个本地closed-over变量来进行超时回调

闭包是由函数动态生成的函数,这正是我们在这里对干代码所需要的

function makeAlerter(text) {
    return {
        delay: function(time) {
            setTimeout(function() {
                alert(text);
            }, time);
        }
    };
}

var first = makeAlerter("test!");
var second = makeAlerter("second");
var third = …; // as many as you want

first.delay(400);
second.delay(1000);

你不能先真正“继承”它-
。delay
关闭一个你无法访问的变量,你对此无能为力,只能完全覆盖该函数。@Bergi好的,如果我离开
var first=function(){…}
那怎么办?在考虑这个
文本之前,请考虑<代码>第一/代码>是一个具有属性的对象,而<代码>第二版/代码>是一个函数。不要把它们混在一起。您希望它是什么?将
first
设置为函数不会有太大变化(除了它是
first()。延迟(…)
现在),除非您将
text
设置为该函数的参数。如果我们有两个函数,例如:
first
second
我怎样才能在这两个函数中附加
delay
函数,并带有不同的警告消息?谢谢,这就是我要找的,是的,我会去读更多关于闭包的内容。