给定如下所示的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] 删除。
我来说两句