所有对象都有 toString 和 valueOf 属性,那么我们是否有必要给每个对象一个 toString 和 valueOf 呢?
明显不需要。
JS 的做法是把 toString 和 valueOf 放在一个对象里(暂且叫做公用属性组成的对象)
然后让每一个对象的 --proto-- 存储这个「公用属性组成的对象」的地址。这样做也可以节省内存空间。
原型:
每个对象都拥有一个隐藏的属性prototype,指向它的原型对象,这个属性可以通过--proto-- 来访问。
访问对象的属性时,JavaScript会首先在对象自身的属性内查找,若没有找到,则会跳转到该对象的原型对象中查找。
原型链的形成是真正是靠--proto-- 而非prototype;
重要公式:
var 对象 = new 函数()
对象.--proto-- === 函数.prototype
(PS:还有一点点疑惑,明白后再修改)