为什么一起存在__proto__和constructor.prototype?

时间:2017-06-09 11:47:49

标签: javascript json

的JavaScript

在书中,我读到为了让对象从原型继承,你需要将这个原型分配给属性views.request_dict。在同一本书中,写道Javascript引擎使用这个原则来组织原型继承链,因为每个原型又具有相似的属性链。

但是当我尝试在实践中使用它时,我得到了意想不到的结果:

.constructor.prototype

但是在我读过的书中,没有关于function Point2d() {this.x = 0; this.y = 0;}; Point2d.prototype.message = function() { return 'I am Point2d: (' + this.x + ','+ this.y + ')'; }; let p = new Point2d; let json = JSON.stringify(p); let pp = JSON.parse(json); // I need the parsed object be the Point2d instance, // therefore I do it: pp.constructor = Point2d; p.constructor == pp.constructor; // true // But I see it: pp.constructor.prototype == Point2d.prototype; // true Object.getPrototypeOf(pp) == Point2d.prototype; // false console.log(p.message()); // it works fine // Oops... Here I get the error: 'pp.message is not a function'. console.log(pp.message()); // Ok... I see that each object also has the __proto__ property. // Change it: pp.__proto__ = Point2d.prototype; console.log(pp.message()); // now it works fine too 属性的文章。

为什么__proto__指向另一个原型?为什么这个属性存在?为什么不仅使用__proto__

0 个答案:

没有答案