Начните с простой попыткой, я определил конструктор и использовать его для создания экземпляра myobject
:Интригующего поведение при установке на прототип конструктора в JavaScript
function MyConstructor() {};
var myobject = new MyConstructor();
Затем я изменил prototype
свойство этого конструктора и создал другой экземпляр myobject1
с ним:
MyConstructor.prototype = {};
var myobject1 = new MyConstructor();
я повторил ту же процедуру и создал еще один экземпляр myobject2
:
MyConstructor.prototype = {name: '2'};
var myobject2 = new MyConstructor();
Теперь я тестирую constructor
свойства каждого экземпляра, который не то, что я ожидал:
myobject.constructor == MyConstructor;
//true
myobject1.constructor == MyConstructor;
//false
myobject2.constructor == MyConstructor;
//false
При поиске [[Prototype]], она отличается друг от друга.
myobject.__proto__ == myobject1.__proto__
//false
myobject2.__proto__ == myobject1.__proto__
//false
Может кто-нибудь объяснить, что происходит с MyConstructor
при изменении его свойства prototype
?
Он показывает то же поведение javascript, но не содержит объяснения - что отделяет старый конструктор и новый конструктор. – steveyang