function Gadget(name, color)
{
this.name = name;
this.color = color;
}
Gadget.prototype.rating = 3
var newtoy = new Gadget("webcam", "black")
newtoy.constructor.prototype.constructor.prototype.constructor.prototype
常に評価 = 3 のオブジェクトを返します。
しかし、次のことを行うと:
newtoy.__proto__.__proto__.__proto__
チェーンは結局戻ってきますnull
。
また、Internet Explorer では、プロパティがない場合に null をどのようにチェックするのでしょうか__proto__
?
ベストアンサー1
最近、この問題について考えてみたのですが、ついにこの「地図」が思い浮かびました。これでこの問題が完全に明らかになると思います。
https://i.sstatic.net/KFzI3.png
私がこれを最初に思いついたわけではないことはわかっていますが、見つけるよりも理解する方が面白かったです :-)。とにかく、その後、基本的に同じことを言っていると思われる別の図を見つけました。
私にとって最も驚いたのは、 が ではなくObject.__proto__
を指していることを発見したことです。しかし、それにはきっと何か理由があるのでしょう :-)Function.prototype
Object.prototype
誰かがテストしたい場合に備えて、画像に記載されているコードもここに貼り付けます。ジャンプ後にどこにいるかを簡単に把握できるように、オブジェクトにいくつかのプロパティが追加されていることに注意してください。
Object.O1='';
Object.prototype.Op1='';
Function.F1 = '';
Function.prototype.Fp1 = '';
Cat = function(){};
Cat.C1 = '';
Cat.prototype.Cp1 = '';
mycat = new Cat();
o = {};
// EDITED: using console.dir now instead of console.log
console.dir(mycat);
console.dir(o);