4

在尝试移植并通常使用一些非浏览器代码时,我遇到了看起来像普通对象属性的 getter 和 setter。像这样的东西:

js> var o = {
    a: 4,
    get b(){
        return this.a + 3;
    },
    set b(val){
        this.a = val - 3;
    }
};
js> o.a
4
js> o.b
7
js> o.b=10
10
js> o.a
7

这似乎在最近版本的 Rhino 和 Spidermonkey 中有效,但是是否可以在 JScript(Windows 脚本宿主)中实现或模拟行为(定义语法对我来说不太重要)?

4

3 回答 3

1

答案是No。Setter 和 getter 只是类似于函数的属性,但无法正确模拟语法。我有一个半途而废的概念,即使用行为在 <=IE7 中模拟 HTML 元素上的 getter 和 setter,但结果证明这比我最初想象的要困难得多。甚至 IE8 也只支持 DOM 对象上的 getter/setter,而不支持 JScript 对象,所以我认为 JScript 团队需要包含它,如果他们这样做的话。

要是有人想在原始的 JScript/ECMAScript 实现中包含 setter 和 getter 就好了。

于 2009-11-21T15:20:54.847 回答
0

这是一个完整的浏览器列表以及它们对 getter 和 setter 的支持。 http://robertnyman.com/javascript/#javascript-getters-setters-object-defineproperty-compatibility

于 2011-12-19T00:00:12.813 回答
0

根据这篇文章(由 jQuery 的创建者 John Resig 撰写),JScript.NET 8 支持 Javascript getter 和 setter。

于 2009-11-16T19:03:14.377 回答