inheritance - Unable to extend javascript prototype -
i playing around idea of subclassing javascript. pretend extending native objects (like array, string etc) bad idea. this, true, out of understanding why.
having said that, let's on it.
what i'm trying extend array (now, extend
may not right term i'm doing)
i want create new class myarray
, want have 2 methods on it. .add
, .addmultiple
.
so implemented this.
function myarray(){ var arr = object.create(array.prototype); return array.apply(arr, arguments); } myarray.prototype = array.prototype; myarray.prototype.add = function(i){ this.push(i); } myarray.prototype.addmultiple = function(a){ if(array.isarray(a)){ for(var i=0;i<a.length;i++){ this.add(a[i]); } } }
this works correctly, if do
console.log(array.prototype.addmultiple ); console.log(array.prototype.add);
i [function]
, [function]
. means code modifying native array
object. trying avoid. how change code in way 2 console.log
s give me undefined
still able use native array.prototype
methods .push
?
tia
you should setup proper prototypes chain:
function myarray(){ array.apply(this, arguments); } myarray.prototype = object.create(array.prototype);
object.create creates new object specified prototype, after operation following true:
myarray.prototype !== array.prototype; // true object.getprototypeof(myarray.prototype) === array.prototype; // true
Comments
Post a Comment