javascript - 為什么var obj = {}創(chuàng)建對象的方法里面不能用this.xxx來聲明屬性 ?
問題描述
為什么var obj = {}創(chuàng)建對象的方法里面不能用this.xxx來聲明屬性 ?
如:
var person = { this.name = ’背鍋俠’;}
就會報錯.看了下它的構(gòu)造器也是Object啊.會什么會有這樣.另外問下.json和對象有啥區(qū)別?
問題解答
回答1:this的指向是未來不確定的調(diào)用者,跟作用域有關(guān)。誰調(diào)用函數(shù),函數(shù)內(nèi)部的this就指向誰。
function Person (name) { this._name = name;}var p1 = new Person(’sarah’);var p2 = new Person(’tom’);
以上使用 new 關(guān)鍵字調(diào)用 Person()函數(shù),并傳入一個字符串’sarah’,作為name的值。此時,函數(shù)內(nèi)部 this 的指向就是p1。同理,另一個就指向p2。如果直接調(diào)用 Person(’sarah’) 方法,由于 Person()的作用域是全局作用域,那么內(nèi)部this就會指向window.
也就是說,this就是個替代品,指向的未來可能涉及的對象。它是不確定的。內(nèi)部定義的屬性指向也會隨之變化。
但是像題主所采用的對象字面量形式,屬性name的指向是確定的,它就是屬于person。題主定義的 person 對象就等于我這里的p1。
另外,如樓上所說,json就是一種數(shù)據(jù)格式啦。方便前后臺傳輸數(shù)據(jù)。
不知道說清楚沒。。。新手作答。
回答2:對象字面量創(chuàng)建對象不是這么寫的吧右面的部份明顯是JSON 格式,只接受Key-Value 的形式
JSON和對象的區(qū)別 舉個栗子
var obj ={ 'you' : 'a good boy' }右面的部分就是你提到的JSON 不管是寫到.json 里 還是.js 里都一樣其實就是一種數(shù)據(jù)格式 就長成這樣子
至于對象 萬物都是對象嘛 對象是個比較抽象的說法
構(gòu)造器都是.json ? 對啊 都是一種數(shù)據(jù)格式嘛
回答3:第一個問題你得去問Brendan Eich。 問問他為啥當(dāng)初JavaScript要這么設(shè)計。
至于第二個問題,JSON是一種數(shù)據(jù)格式,而對象……就假定你說的是JavaScript吧,對象是JavaScript的一種數(shù)據(jù)類型。
相關(guān)文章:
1. 數(shù)據(jù)庫 - Mysql的存儲過程真的是個坑!求助下面的存儲過程哪里錯啦,實在是找不到哪里的問題了。2. php傳對應(yīng)的id值為什么傳不了啊有木有大神會的看我下方截圖3. 如何用筆記本上的apache做微信開發(fā)的服務(wù)器4. python - linux怎么在每天的凌晨2點執(zhí)行一次這個log.py文件5. 關(guān)于mysql聯(lián)合查詢一對多的顯示結(jié)果問題6. 冒昧問一下,我這php代碼哪里出錯了???7. windows誤人子弟啊8. mysql優(yōu)化 - MySQL如何為配置表建立索引?9. MySQL主鍵沖突時的更新操作和替換操作在功能上有什么差別(如圖)10. 實現(xiàn)bing搜索工具urlAPI提交
