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