我在Dojo中定义了一个自定义的类/小部件。我如何使它的一些属性/方法私有化?
Dojo文档提倡使用_underline将属性/方法标记为私有,但这似乎只是一种约定,并没有真正使属性/方法成为私有的。
define(
["dojo/_base/declare"],
function(declare) {
declare("MyWidget", [_WidgetBase], {
publicAttr: 8,
publicMethod: function() { ... },
_privateAttr: 7,
_privateMethod: function() { ... }
});
}
);
1条答案
按热度按时间dly7yett1#
通常在用JavaScript开发的时候,开发者喜欢在他们的private成员前面加上一个下划线,让其他开发者知道不要碰它们。这只是一个约定,并不是真正的private。
在JavaScript中,使变量和函数私有化(局部变量和函数)非常容易,但不幸的是,不可能使对象的属性私有化。
如果你真的不想让函数/变量不能从对象中访问,你可以实现如下所示的东西。
在这里,函数
privateFunction
可由小部件的方法访问,其他人将无法通过小部件的示例调用该函数。你可以把函数的上下文放到widget中,然后你就可以通过
this
访问widget的所有属性,而不需要把widget示例作为参数传递。有几种方法可以实现它。你可以lang.hitch
。我最喜欢的是希望这对你有帮助。