Prototypal inheritance
🏷️ Javascript
Objects have a hidden property [[Prototype]]
, which is either null
or references to another object (a prototype)
Access [[Prototype]]
: obj.__proto__
Set [[Prototype]]
value:
obj.__proto__ = value;
value
can be either an object or null
When accessing a missing property from object, Javascript will find it from the prototype
Prototype is only used for reading properties
Writing/deleting works directly with the object except accessor properties
The value of this
in a method call is always the object before the dot
for..in
loops over both own and inherited keys of the object
obj.hasOwnProperty(key)
: return true
if obj
has own (not inherited) property key