在JScript中,是否可以从外部实现看起来像对象属性的getter和setter?

时间:2009-11-16 18:56:52

标签: get set javascript wsh

在尝试移植并且通常使用一些非浏览器代码时,我遇到了看起来像普通对象属性的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脚本宿主)中是否可以实现或模拟行为(定义语法对我来说不那么重要)?

3 个答案:

答案 0 :(得分:1)

答案是No。 Setter和getter只是功能类似的属性,但没有办法正确模拟语法。我有一个在使用行为的< = IE7中使用HTML元素模拟getter和setter的中途概念,但即使这样也比我想象的要困难得多。即使IE8只支持DOM对象上的getter / setter而不支持JScript对象,所以我认为这是JScript团队需要包含的东西,如果他们这样做的话。

如果只有人想过在原始的JScript / ECMAScript实现中包含setter和getter。

答案 1 :(得分:0)

根据this article(由jQuery的创建者John Resig提供),JScript.NET 8支持Javascript getter和setter。

答案 2 :(得分:0)

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