Javascript 如何将函数添加到具有继承性的现有函数
目前正在学习javascript,仍然坚持继承。问题: 如何使用不同的文本aka-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) } }
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
函数,并带有不同的警告消息?谢谢,这就是我要找的,是的,我会去读更多关于闭包的内容。