- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在学习 JavaScript。
我发现了流行的扩展功能:
function extend(Child, Parent) {
var F = function() { }
F.prototype = Parent.prototype
Child.prototype = new F()
Child.prototype.constructor = Child
Child.superclass = Parent.prototype
}
让我们创建 3 个类
function foo() {}
foo.prototype.identify = function() {
return "I'm a foo";
}
function bar() {}
extend(bar, foo)
bar.prototype.identify = function() {
return "I'm a bar and " +
this.constructor.superclass.identify.apply(this, arguments);
}
function zot() {}
extend(zot, bar)
zot.prototype.identify = function() {
return "I'm a zot and " +
this.constructor.superclass.identify.apply(this, arguments);
}
因此我们有以下继承方案:
foo->bar->zot
让我们编写一些代码:
f = new foo();
alert(f.identify()); // "I'm a foo"
b = new bar();
alert(b.identify()); // "I'm a bar and I'm a foo"
z = new zot();
alert(z.identify()); // stack overflow
丢失的行产生
Uncaught RangeError: Maximum call stack size exceeded(…)
您能详细解释一下发生了什么吗?
最佳答案
因为一旦 identify.apply(this)
被调用两次(就像在 zot
中,与 bar
不同),this
将指向两个函数上的同一个实例,并将无休止地调用自己的 identify()
方法。
相反,尝试显式指向基本 identify
方法:
function extend(Child, Parent) {
var F = function() {}
F.prototype = Parent.prototype
Child.prototype = new F()
Child.prototype.constructor = Child
Child.superclass = Parent.prototype
}
function foo() {}
foo.prototype.identify = function() {
return "I'm a foo";
}
function bar() {}
extend(bar, foo)
bar.prototype.identify = function() {
return "I'm a bar and " +
bar.superclass.identify.apply(this, arguments);
}
function zot() {}
extend(zot, bar)
zot.prototype.identify = function() {
return "I'm a zot and " +
zot.superclass.identify.apply(this, arguments);
}
var f = new foo();
alert(f.identify()); // "I'm a foo"
var b = new bar();
alert(b.identify()); // "I'm a bar and I'm a foo"
var z = new zot();
alert(z.identify()); // "I'm a zot and I'm a bar and I'm a foo"
参见Fiddle
关于javascript - 当我调用 this.constructor.superclass.someMethod 时,超出最大调用堆栈大小会引发异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40842246/
我一直在努力理解一段这样的代码: class A { // some class definition } class B { public: virtual A *s
我知道 C# 中的 string 和 String 没有区别(除了为 System 添加的 using System .字符串)。仍然,和this SO-answer一样,当我调用 String.So
请看下面的程序:- class Main { public static void main(String[] args) { System.out.println(Boolean.TRU
我正在调查 Blazor,我无意中发现了这个表达式: @onclick="(() => SomeMethod(parameter))" 我无法在任何地方找到/谷歌这个(我猜是 lambda)表达式实
以下是合法的(据我所知): class Outer { void someMethod() { // do something } class Inner {
我知道 :: 是范围解析运算符。但是,如果某些内容仅以范围解析运算符开头,这意味着什么。我知道需要在范围解析运算符之前放置一些东西(类名或命名空间)。如果范围解析运算符之前没有任何内容怎么办。例如 :
我有这个代码: // .m - (void)viewDidLoad { NSMutableArray *array = [[NSMutableArray alloc] init]; [
我需要找到 EditorFor 的所有用法撤消我所做的愚蠢的事情。是否可以找到 Method 的所有用法?对于特定的 T ? 即使是 hack-y 解决方案也会受到赞赏。 最佳答案 如果您知道模型的类
在 hibernate 中创建我们使用的标准 Criteria criterea=session.createCritera(SomeClass.class) 它也可能在其他一些示例中可用,但我无法理
我们可以在抽象类的派生类中调用 super.someMethod() 吗? 例如: abstarct class TestBase{ void nonabstractMethod(){ .
我今天遇到了一个奇怪的语法。该代码来自 Gradle 的源文件,您可以在 src/core-impl/org/gradle/api/internal/artifacts/configurations/
这是我的主类(它使用子类:) import SubClass from './SubClass' class MainClass extends classes(SubClass) { const
页面上有一个带有 href="javascript:someMethod()" 的链接。我需要在 javascript 中以编程方式单击此链接。请不使用 eval() 和不使用 JQuery。 最佳答
当您只能使用简写 Id.something 时,写出 document.getElementById 有什么好处吗?我很感兴趣,因为我在我的教程中看到一些在线代码声明变量 x 等于 document.
我前段时间做了一个原型(prototype),使用 VSTO 并将其方法公开给其他项目。 现在,我尝试将我当时的成功使用实现到我目前正在从事的项目中,但它不起作用。 我收到一条异常消息“System.
这个我可以getChildAt(0).alpha = 0; 但这会引发错误getChildAt(0).gotoAndStop(2); 如何使用显示列表数组访问影片剪辑的方法? 最佳答案 getChil
什么是 (window)在 Angular2 中使用时? 我在研究 Stripe 支付库时发现的: (window).Stripe.card.createToken({ number: this.
我正在学习 JavaScript。 我发现了流行的扩展功能: function extend(Child, Parent) { var F = function() { } F.pro
(注意代码是示例) 我有以下语法: SomeMethod(() => x.Something) 表达式中的第一个括号是什么意思? 我也很好奇如何从传入的参数中获取属性名称。这可能吗? 最佳答案 Wha
当尝试使用 cxf-java2ws-plugin 生成 Web 服务工件时,它又使用 JAX-B,我在如下所示的方法中收到以下错误: Map myMethod(...); 更改方法签名是最后的手段
我是一名优秀的程序员,十分优秀!