在 Dart 中,函数是否可以有与之关联的原型(prototype)?
Javascript 代码示例:
doStuff.prototype.isDefined = true; //is there anything like Javascript's function prototypes in Dart?
function doStuff(){
console.log("The function doStuff was called!");
}
是否可以在 Dart 中执行与此等效的操作(即为每个函数创建属性列表?)
最佳答案
这里需要解决两件事:
首先,Dart 没有原型(prototype)或原型(prototype)继承,而是使用经典继承。对象拥有类,而不是原型(prototype);对象拥有父类(super class),而不是原型(prototype)链。
其次,对于您的具体情况,我认为我们必须了解您需要做的更多事情才能找出在 Dart 中执行此操作的惯用方法。很快就可以用对象模拟函数,以便您可以调用对象并仍然拥有与其关联的状态和其他方法。
请参阅这篇文章了解更多信息:http://www.dartlang.org/articles/emulating-functions/
当该功能落地时,您将能够执行以下操作:
class DoStuff {
bool isDefined = true;
call() => print("The function doStuff was called!");
}
var doStuff = new DoStuff();
main() => doStuff();
如果您有一组需要跟踪的关于您的函数的固定元数据,那么这很有效。它与 JavaScript 略有不同,因为 Dart 中函数的每个实例都有自己的 isDefined
状态。我不确定是否可以或容易在 JavasScript 中获取该函数的多个实例,但您可能需要将 isDefined
设为静态,以便在所有实例之间共享该值。
关于dart - Dart 编程语言是否有相当于 Javascript 的 "prototype"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12667001/