This is really bugging me. I can easily create a new class that inherits methods from Array.prototype
:
var MyArray = function() {};
MyArray.prototype = Array.prototype;
var myArray = new MyArray();
myArray.push(1); // this is allowed
The same inheritance pattern doesn't seem to work with Set.prototype
:
var MySet = function() {};
MySet.prototype = Set.prototype;
var mySet = new MySet();
mySet.add(1); // TypeError: Method Set.prototype.add called on incompatible receiver
Is this an implementation issue? Is there another inheritance pattern that will work? I've tried this in node v0.12 and Canary with the same results.
EDIT: This solution works, but I'm still not sure why the above doesn't work the same:
var MySet = function(array) {
var inst = new Set(array);
inst.__proto__ = MySet.prototype;
return inst;
}
MySet.prototype = Object.create(Set.prototype);