[gjs/mozjs31] lang: No need to set prototype for Lang.Interface
- From: Philip Chimento <pchimento src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gjs/mozjs31] lang: No need to set prototype for Lang.Interface
- Date: Sun, 27 Nov 2016 21:06:17 +0000 (UTC)
commit fdd1325ccb6b859ee5bef7bf2e81e42b1022c604
Author: Philip Chimento <philip endlessm com>
Date: Tue Nov 22 12:26:33 2016 -0500
lang: No need to set prototype for Lang.Interface
Since we are removing any direct alterations of objects' prototypes, we
can remove this one altogether as it turns out that it isn't necessary.
The normal way to create an object with a custom prototype is
Object.create(), and since it's not necessary for the interface object to
be callable, we don't have to do the trick where we give a function a
custom prototype.
We still need to do the trick for GObject interfaces, because the
interface object needs to be the object returned from
Gi.register_interface().
https://bugzilla.gnome.org/show_bug.cgi?id=751252
modules/lang.js | 10 ++--------
1 files changed, 2 insertions(+), 8 deletions(-)
---
diff --git a/modules/lang.js b/modules/lang.js
index 437d8bb..9583a79 100644
--- a/modules/lang.js
+++ b/modules/lang.js
@@ -385,19 +385,13 @@ Interface.prototype.__name__ = 'Interface';
Interface.prototype._construct = function (params) {
if (!params.Name)
throw new TypeError("Interfaces require an explicit 'Name' parameter.");
- let name = params.Name;
-
- let newInterface = function () {
- throw new TypeError('Cannot instantiate interface ' + name);
- };
- // See note in Class._construct(); this makes "newInterface instanceof
- // Interface" work, and allows inheritance.
- newInterface.__proto__ = this.constructor.prototype;
+ let newInterface = Object.create(this.constructor.prototype);
newInterface.__super__ = Interface;
newInterface.prototype = Object.create(Interface.prototype);
newInterface.prototype.constructor = newInterface;
+ newInterface.prototype.__name__ = params.Name;
newInterface._init.apply(newInterface, arguments);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]