希望有人可以在Famo.us中提供以下类型的函数之间的区别,以及何时适合使用它们的解释 - 我五:
sampleFunction() {}
_sampleFunction() {}
SampleView.prototype.sampleFunction() {}
.bind和.call也被抛出很多......我模糊地理解它们但不像我想的那样具体。这可能是一个不同的问题,但请在解释中随意使用它们!
对模糊的道歉...希望在famo.us大学有更多关于这一点。
答案 0 :(得分:2)
您所看到的都不是Famo.us特有的语法。它实际上很常见,如果是中级,VanillaJS。
_
只是一种编码约定,表示特定函数应该属于父作用域(即成员/私有函数,无论你喜欢什么称它)。 Javascript实际上并不支持封装 - 阻止其他类和对象访问另一个类的函数和变量的行为。虽然有可能,但它非常麻烦和笨拙。
您将看到Famo.us使用下划线约定来表示函数是使用它的类的成员。其中一些函数实际上只是实际Javascript本机函数的别名,例如._add
实际上只调用了Javascript的.add
方法。当然,如果需要,将来可以在Famo.us的最后更新._add
以便在将来做更多事情。你真的不想尝试写原生Javascript添加。那太糟糕了。
另一个结果是你可以记录该类,并说你可以而且应该将_add方法用于特定目的/场景。您将在API文档中看到它。
理解prototype
是成为Javascript程序员意味着什么的核心部分,毕竟它是一种原型驱动的语言。 MDN has a much better explanation than anything I can offer here但它基本上是你班级的核心。
如果您想扩展现有的类(例如,创建自己的View
或Surface
类型),您可以扩展它的原型。查看Famous Starter Kit的App示例,看看有多少人创建了一个“AppView”类,它采用核心View
的原型,为自己复制,然后添加它自己的函数,从而扩展{{1不破坏原始副本。