【问题标题】:Javascript Inheritance subclass calling by default默认情况下调用Javascript继承子类
【发布时间】:2012-09-17 07:02:14
【问题描述】:

我有一个场景,我需要在 sample.B 中覆盖 sample.A

当我单击时,我将调用一个函数,我需要从中调用 sample.A.Test(),该函数需要在内部调用 sample.B 中的覆盖函数 (Test) 并仅执行此函数。有可能吗?

我的同行说java script会默认调用子类函数并被执行,是真的吗?

以上场景

sample.A = (function () {

return {

Test: function(){           
    console.debug('Test in Super class');
},
}

sample.B = (function () {
return {

Test: function(){   
    console.debug('Test in Sub class');
},
}

这个行为可以通过java script或者jquery来实现吗?

【问题讨论】:

  • jQuery 只是另一个 JavaScript 库,并没有做任何继承所需的事情。
  • 你需要这些函数表达式闭包做什么(最后甚至缺少)();,使你的代码无效)?只需将对象分配给sample 对象的属性即可。
  • JavaScript 没有类,只有原型继承。请告诉我们你是如何调用你的函数的,为什么你的超类A在内部应该调用它的子类B

标签: javascript inheritance


【解决方案1】:

要在 JavaScript 中启用“继承”,您至少需要添加一些实用方法。

例如:

function inheritMethods(fromA, intoB) {
   for (x in fromB) {
     if (typeof x === 'function') {
        intoB[x] = fromA[x];
     }
   }
}

或类似的东西......

但是由于经典 OO 意义上的“继承”不是 JavaScript 原生的,因此有多种方法可以模拟这一点。如果你能拿到这本书,在“代码重用”下的“JavaScript Patterns”中有一个很好的讨论。

【讨论】:

    猜你喜欢
    • 2016-06-17
    • 1970-01-01
    • 1970-01-01
    • 2011-04-18
    • 1970-01-01
    • 1970-01-01
    • 2012-02-29
    • 1970-01-01
    • 2016-05-19
    相关资源
    最近更新 更多