【问题标题】:Create javascript property like C# property创建 javascript 属性,如 C# 属性
【发布时间】:2010-07-08 22:48:26
【问题描述】:

是否可以在 javascript 对象上创建一个行为类似于 C# 中的属性的属性。

示例: 我使用 dojo 创建了一个自动调整大小的 textarea 小部件。为了从我的小部件中获取“值”属性,我已经连接到 onchange 事件,并且每次 textarea 的值发生变化时我都会设置一个变量。

有没有办法在不连接 onchange 事件的情况下完成此操作。

编辑

换句话说,是否可以在 JavaScript 中编写一些行为类似于 getter 和/或 setter 的东西。

【问题讨论】:

    标签: c# javascript


    【解决方案1】:

    这在 ECMAScript 5 实现中是可能的,其中包括 recent versions of all major browsers。 ECMAScript 5 规范添加了标准化的 getter 和 setter。一个怪癖是 IE 8 具有此功能,但仅在 DOM 节点上。语法如下:

    var obj = {};
    
    Object.defineProperty(obj, "value", {
        get: function () {
            return this.val;
        },
        set: function(val) {
            this.val = val;
        }
    });
    

    长期以来,Mozilla 中也有 getter 和 setter 的专有实现,后来也被 WebKit 和 Opera 采用,但在 IE 中不可用。

    【讨论】:

    • 这看起来像我要找的东西,但是当你想在代码中使用它时如何调用它?
    【解决方案2】:

    我不确定你在这里问什么。您始终可以在没有 onchange 事件的情况下获取 textarea 的值。您必须先获取对象,然后查看 value 属性。

    例如,如果你的 textarea 有一个 id="mytext" 你可以这样做

    var mytextarea = document.getElementById("mytext");
    var text = mytextarea.value;
    

    【讨论】:

    • 我了解约翰。谢谢你。我已经编辑了我的问题。我希望现在更清楚一点。
    • 对我来说似乎并没有更清楚。您是否希望向属性 getter 和 setter 添加逻辑?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多