如何在JavaScript中填充属性?
作者:互联网
给定一个将以浏览器为前缀的事件的属性,我想创建一个使其看起来没有前缀的polyfill.
例如.接口FooEvent有一个webkitBar属性,我想使其显示为bar,以便处理程序可以写为onFoo = function(e){console.log(e.bar); }
我笨拙的初步猜测是在原型中注入一些东西FooEvent.prototype.getBar = function(){return this.webkitBar; }.但是,我不确定如何.
解决方法:
仅限ES5(和IE8)
Object.defineProperty(FooEvent.prototype, "bar", {
get: function () {
return this.webkitBar;
},
configurable: true
});
请注意扩展主机对象. (FooEvent是一个宿主对象)具有未知的副作用,是一个很大的未定义行为.
我推荐静态包装器
var eventUtil = {
getBar: function (ev) {
return ev.webkitBar;
}
}
function handler (e) {
var bar = eventUtil.getBar(e);
}
标签:polyfills,javascript 来源: https://codeday.me/bug/20190902/1793250.html