Added superCtor to ctor.super_ instead superCtor.prototype.
authorJohan Dahlberg <jfd@distrop.com>
Sat, 5 Dec 2009 12:33:15 +0000 (13:33 +0100)
committerRyan Dahl <ry@tinyclouds.org>
Tue, 8 Dec 2009 05:19:12 +0000 (06:19 +0100)
This way let's us do deep comparison between object instances.

I have a suggestion for the sys.inherits function. Today it's impossible to
deep comparison between instance and class.

Take this snippet for example:

function ClassA() {}
function ClassB() {}

sys.inherits(ClassB, ClassA);

var instance = new ClassB();

The instance variable inherits from ClassA but we can't check it (which is
useful sometimes). You can compare the instance against ClassB
(instance.constructor == ClassB) but we can't compare it deeper
(instance.constructor.super == ClassA). The committed change simply assign
super to the super constructor instead of the super prototype.

I can't see any problem with this fix. You can still get the super constructor
by calling super_.prototype.

src/node.js

index b0a524c..34fd0d6 100644 (file)
@@ -183,7 +183,7 @@ process.EventEmitter.prototype.listeners = function (type) {
 process.inherits = function (ctor, superCtor) {
   var tempCtor = function(){};
   tempCtor.prototype = superCtor.prototype;
-  ctor.super_ = superCtor.prototype;
+  ctor.super_ = superCtor;
   ctor.prototype = new tempCtor();
   ctor.prototype.constructor = ctor;
 };