gpt4 book ai didi

javascript - Javascript 是否有像 C# 这样的 get/set 关键字?

转载 作者:行者123 更新时间:2023-12-03 13:33:54 28 4
gpt4 key购买 nike

我正在使用 XULRunner 并在代码示例中遇到以下模式:

var StrangeSample = {

backingStore : "",

get foo() { return this.backingStore + " "; },

set foo(val) { this.backingStore = val; },

func: function(someParam) { return this.foo + someParam; }
};

StrangeSample.foo = "rabbit";
alert(StrangeSample.func("bear"));

这导致“兔子熊”被警告。

我以前从未在 Javascript 中看到过这种 get/set 模式。它有效,但我找不到任何文档/引用。这是 XUL 特有的东西、最近的语言功能,还是我错过的东西?我很困惑,因为几个月前我专门寻找这样的东西,却找不到任何东西。

作为引用,删除“get”或“set”会导致语法错误。将它们重命名为其他任何名称都是语法错误。它们似乎确实是关键字。

任何人都可以为我阐明这一点,或指出我的引用吗?

最佳答案

正如 Martinho 所建议的,这里有一些解释 JS 1.5 中的 getter/setter 的链接:

http://ejohn.org/blog/javascript-getters-and-setters/

http://ajaxian.com/archives/getters-and-setters-in-javascript

但是请注意,它们似乎在 IE 中不受支持,并且一些开发人员(合理地)担心变量赋值具有副作用的想法。

正如丹尼尔指出的那样,get/set 不是保留关键字。我可以毫无问题地创建一个名为“get”和“set”的顶级函数,并使用上面发布的代码示例。所以我假设解析器足够聪明,可以做到这一点。事实上,即使以下内容似乎也是合法的(如果令人困惑):

var Sample = {
bs : "",
get get() { return this.bs; },
set get(val) { this.bs = val; }
}

关于javascript - Javascript 是否有像 C# 这样的 get/set 关键字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5409372/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com