如何向具有继承性的现有函数添加函数

时间:2015-12-05 22:07:27

标签: javascript inheritance

此刻学习javascript,坚持继承。题: 如何将 PROBE_ID SYMBOL CT.AVG_Signal CT.NARRAYS CT.ARRAY_STDEV CT.Detection.Pval CT.DiffScore KO.AVG_Signal 1 ILMN_1223317 Lgals3 434.8137 4 83.70733 0 0 1935.535 2 ILMN_3049559 C4b 1577.4540 4 237.21950 0 0 6974.214 KO.NARRAYS KO.ARRAY_STDEV KO.Detection.Pval KO.DiffScore SEARCH_KEY ILMN_GENE CHROMOSOME 1 4 223.9622 0 333.2554 ILMN_222956 LGALS3 14 2 4 531.5039 0 333.2554 ILMN_210539 C4B 17 DEFINITION 1 Mus musculus lectin, galactose binding, soluble 3 (Lgals3), mRNA. 2 Mus musculus complement component 4B (Childo blood group) (C4b), mRNA. XM_921663 XM_921673 XM_921676 XM_921678 SYNONYMS 1 L-34; Mac-2; GBP; gal3 2 Ss; C4 png("BS.png", width=1500, height=800) g<-ggplot(BS,aes(SYMBOL,KO.DiffScore)) BSplot<-g+geom_point()+theme(axis.text.x=element_text(angle=45,hjust=1,size=8)) print(BSplot) dev.off() 函数从delay函数继承到first,并使用不同的文本 - second

var text

我需要使用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.call(this, time)我如何实现这一目标?我想我可以用不同的方法做到这一点......

1 个答案:

答案 0 :(得分:1)

您可能希望仔细查看closures。继承在这里并没有真正帮助你,因为你需要一个本地的闭合变量用于超时回调。

闭包是由函数动态生成的函数 - 这正是我们干代码所需要的。

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);