1
0
mirror of https://github.com/gryf/pentadactyl-pm.git synced 2026-01-01 20:22:29 +01:00

Use Object.defineProperty instead of __defineGetter__/__defineSetter__

In Firefox 48+, the __defineSetter__/__defineSetter__ is deprecated,
so use Object.defineProperty instead.
This commit is contained in:
Zheng Chaoping
2016-05-04 20:00:59 +08:00
parent 1a4290d92a
commit 195ea78efb
20 changed files with 291 additions and 146 deletions

View File

@@ -19,14 +19,20 @@ var namespace = "@namespace html " + JSON.stringify(XHTML) + ";\n" +
var Sheet = Struct("name", "id", "sites", "css", "hive", "agent");
Sheet.liveProperty = function (name) {
let i = this.prototype.members[name];
this.prototype.__defineGetter__(name, function () { return this[i]; });
this.prototype.__defineSetter__(name, function (val) {
if (isArray(val))
val = Array.slice(val);
if (isArray(val))
Object.freeze(val);
this[i] = val;
this.enabled = this.enabled;
Object.defineProperty(this.prototype, name, {
get() {
return this[i];
},
set(val) {
if (isArray(val))
val = Array.slice(val);
if (isArray(val))
Object.freeze(val);
this[i] = val;
this.enabled = this.enabled;
},
enumerable: true,
configurable: true
});
};
Sheet.liveProperty("agent");