What the ■■■■ is this? Can anyone explain me to what I just typed and why it's important?
// what is this "Object.prototype" anyway...?
var prototypeType = typeof Object.prototype;
// now let's examine it!
var hasOwn = Object.prototype.hasOwnProperty('hasOwnProperty');
/* A prototype is an early sample, model, or release of a product built to test a concept or process or to act as a thing to be replicated or learned from. The word prototype derives from the Greek πρωτότυπον prototypon, "primitive form", neutral of πρωτότυπος prototypos, "original, primitive", from πρῶτος protos, "first" and τύπος typos, "impression".
One of the most important advantages of prototypal inheritance is that you can add new properties to prototypes after they are created. This allows you to add new methods to a prototype which will be automatically made available to all the objects which delegate to that prototype.
This is not possible in classical inheritance because once a class is created you can't modify it at runtime. This is probably the single biggest advantage of prototypal inheritance over classical inheritance, and it should have been at the top.
Not only will it be it easier to explain prototypal inheritance using the prototypal pattern, but it will also make better programmers
*/ /* ++++++++ a String type explained ++++++
why it should be Object.prototype.hasOwnProperty.... The hasOwnPropertyMethod is the only method which will be fetched from the Object.prototype WITHOUT traversing through the prototype Chain.
The lookup time for properties that are high up on the prototype chain can have a negative impact on performance, and this may be significant in code where performance is critical. Additionally, trying to access nonexistent properties will always traverse the full prototype chain.
Also, when iterating over the properties of an object, every property that is on the prototype chain will be enumerated.
To check whether an object has a property defined on itself and not somewhere on its prototype chain, it is necessary to use the hasOwnProperty method which all objects inherit from Object.prototype.
now to your case: var prototypeType = typeof Object.prototype; will leave you with a variable which has a VALUE of the string-type
As the string is created, you will get a present...the lengthProperty prototypeType.hasOwnProperty("length") ==> true.
From the String.prototype you will inherit the methods: 'sup', 'sub', 'strike', 'small', 'link', 'italics', 'fontsize', 'fontcolor', 'fixed', 'bold', 'blink', 'big', 'anchor', 'valueOf', 'trim', 'toUpperCase', 'toString', 'toLowerCase', 'toLocaleUpperCase', 'toLocaleLowerCase', 'substr', 'substring', 'split', 'match', 'localeCompare', 'concat', 'charCodeAt', 'charAt', 'slice', 'search', 'replace', 'lastIndexOf', 'indexOf'