Using a Function prototype, that sounds like a non-sense, it is possible to know if a constructor has some property, or method, defined in its prototype.
Function.prototype.prototyped = function(){
for(var i in new this)
return true;
return false;
};
Some test example?
alert(Array.prototyped()); // false
Object.prototype.each = function(){};
alert(Array.prototyped()); // true
delete Object.prototype.each;
alert(Array.prototyped()); // false
Array.prototype.each = function(){};
alert(Array.prototyped()); // true
alert(Object.prototyped()); // false
Update
Has Kangas spotted, there is no reason to create a new instance.
We could loop directly the prototype object.
But what's up if we have injected privileged methods in the constructor?
Array = function(Array){
var prototype = Array.prototype;
return function(){
arguments = prototype.slice.call(arguments, 0);
arguments.each = function(){
prototype.forEach.apply(this, arguments);
};
return arguments;
};
}(Array);
var a = new Array(1, 2, 3);
a.each(function(value){
alert(value)
});
for(i in Array.prototype)
alert(i); // nothing
Above example is the reason I chose to create an instance ... but hey, why on heart someone should wrap a native constructor? :P
No comments:
Post a Comment