我正在用 Javascript 编写一些 OOP 代码,继承的设计提出了一个问题。像Java一样, super 构造函数调用应该是Javascript中子类构造函数的第一行吗?
var Effect = function (container, height, width) {};
var XEffect = function (container, height, width, resource) {
Effect.call(container, height, width ); // really necessary to be first line?
};
最佳答案
引用Douglas Crockford的话:“JavaScript有一个无类的对象系统,其中对象直接从其他对象继承属性。这确实很强大,但对于受过经典训练的程序员来说是陌生的。如果你尝试直接应用经典设计模式对于 JavaScript,你会感到沮丧。但是如果你学会使用 JavaScript 的原型(prototype)性质,你的努力将会得到返回。”
查看Object.prototype了解 JavaScript 中如何处理继承。
在您的代码片段中,Effect.call(container, height, width);
将简单地评估为 undefined
除非您事先明确定义它。要调用 Effect
函数的功能,您只需将其调用为 Effect()
。
关于javascript - 与 Java 一样,Object.call 也应该是 Javascript 构造函数中的第一个调用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31131845/