Famo.us:创建和调用函数的不同方法

时间:2014-07-17 20:03:50

标签: famo.us

希望有人可以在Famo.us中提供以下类型的函数之间的区别,以及何时适合使用它们的解释 - 我五:

sampleFunction() {}

_sampleFunction() {}

SampleView.prototype.sampleFunction() {}

.bind和.call也被抛出很多......我模糊地理解它们但不像我想的那样具体。这可能是一个不同的问题,但请在解释中随意使用它们!

对模糊的道歉...希望在famo.us大学有更多关于这一点。

1 个答案:

答案 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但它基本上是你班级的核心。

如果您想扩展现有的类(例如,创建自己的ViewSurface类型),您可以扩展它的原型。查看Famous Starter Kit的App示例,看看有多少人创建了一个“AppView”类,它采用核心View的原型,为自己复制,然后添加它自己的函数,从而扩展{{1不破坏原始副本。