我想知道全局對象是不是繼承自Object呢?如果是,那應該有this.__proto__===Object.prototype//但是實際結果為false而this也確實有__proto__這個屬性,如果它不指向Object.prototype那么應該指向哪里呢?另外一個讓我困得問題是如下代碼:Object.prototype.s=15;
(function(){
console.log(s);
}());以上代碼正常輸出15,但是為什么呢?函數不是應該沿著作用域鏈上尋s嗎?這個匿名函數本身沒有s,所以他應該去全局中找,但是我是給Object的原型添加了s的屬性并沒有給全局對象加s屬性,它是怎么找到的?另外,如果又有:var s=20;Object.prototype.s=15;
(function(){
console.log(s);
}());則輸出20而不是15???我對此的理解是因為全局對象是一個對象,所以它的__proto__指向Object.prototype所以當全局對象沒有s時沿著原型鏈上尋找到Object.prototype.s,若全局對象有s,則它覆蓋了Object.prototype.s。但是這又和開頭問題沖突了。。。啊啊啊啊啊頭都大了到底怎么解釋呢?求大神解答,感激不盡!
JavaScript中全局對象是不是繼承自Object呢?
眼眸繁星
2018-10-10 17:19:42