【发布时间】:2012-09-07 21:43:55
【问题描述】:
在 Javascript 中,使用属性访问器似乎并不常见(不像其他 OO 语言,例如 Java)。
如果我有一个带有名称的Person 对象,定义为
function Person(name) {
this.name = name;
}
一个人的名字不会改变,但我确实希望能够在需要时访问它,所以我可以这样做:
function Person(name) {
var name = name;
this.getName = function() {
return name;
}
}
即使在动态语言中,我认为使用 getter 和 setter 的原则也适用于静态类型的 OO 语言(例如封装、添加验证、限制访问等)
这个问题可能会因为主观而被关闭,但我很好奇为什么这种行为不会更频繁地出现(例如,如果一切都是公开的,Java 开发人员会发疯的)。
在 javascript 中是否有“标准”方式来执行此操作?我见过Object.defineProperty,但并非所有浏览器都支持。
【问题讨论】:
-
我认为这可能部分与减少带宽负载的愿望有关。额外的标记意味着线路上的额外位。虽然在像这样的小例子中,它可能看起来无关紧要,但在跨越数万行的强大应用程序中,它可能变得很重要。
-
额外的定义也意味着客户端的额外内存使用,与我之前的评论相同。
-
我认为已经给出的答案表明这对 SO 来说不是一个好问题,因为它很容易得到基于意见的答案。
标签: javascript accessor