Когда вы говорите:
MyString.prototype.__proto__ = String.prototype ;
Вы говорите, что среда выполнения должна искать в String.prototype
свойства MyString.prototype
, которые не объявлены в MyString.prototype
напрямую.Но это окольный способ сказать то, что вы пытались сказать , а именно: экземпляры из MyString
должны иметь те же свойства и методы, что и String
.
Вы говорите так:
MyString.prototype = new String();
__proto__
- это свойство объекта instance .Это обратная связь во время выполнения к объекту, который служит прототипом этого экземпляра.С другой стороны, prototype
является свойством функций конструктора.Это шаблон для всех объектов, созданных этим конструктором.