IE8的Object.defineProperty替代

jdrm

给定如下所示的javascript代码(摘自以下引用的插件):

var AutosizeInput = (function () {
    function AutosizeInput(input, options) {
        var _this = this;
        this._input = $(input);
        this._options = options;


    }
    Object.defineProperty(AutosizeInput.prototype, "options", {
        get: function () {
            return this._options;
        },
        enumerable: true,
        configurable: true
    });
}

插件的完整代码位于:https : //github.com/MartinF/jQuery.Autosize.Input/blob/master/jquery.autosize.input.js

从我阅读的内容来看,对Object.defineProperty的调用在IE8上不起作用,因为它不是DOM对象。

这是正确的吗?..如果是...这将是重写此getter(和setter)以符合IE8的最佳方法?

亚历克斯·韦恩

IE8不支持非DOM对象属性的getter / setter函数。

这里的“解决方案”是不依赖于属性获取器,而应使用完整的获取器功能。

AutosizeInput.prototype.getOptions = function() {
  return this._options;
};

var input = new AutoresizeInput();
input.getOptions();

或者,不要将其保留this._options为“内部”变量,而是直接删除下划线允许访问。这样,您根本不需要魔术。

var AutoresizeInput = function() {
  this.options = {};
}

var input = new AutoresizeInput();
input.options();

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章