javascript - 為什麼var obj = {}創建物件的方法裡面不能用this.xxx來宣告屬性 ?
仅有的幸福
仅有的幸福 2017-07-05 10:51:33
0
3
1061

為什麼var obj = {}建立物件的方法裡面不能用this.xxx來宣告屬性 ?

如:

var  person = {
   this.name = '背锅侠';
}

就會報錯.看了下它的建構器也是Object啊.會什麼會有這樣.另外問下.json和物件有啥區別?

仅有的幸福
仅有的幸福

全部回覆(3)
我想大声告诉你

this的指向是未來不確定的呼叫者,跟作用域有關。誰呼叫函數,函數內部的this就指向誰。

function Person (name) {
    this._name = name;
}
var p1 = new Person('sarah');
var p2 = new Person('tom');

以上使用 new 關鍵字呼叫 Person()函數,並傳入一個字串'sarah',作為name的值。此時,函數內部 this 的指向就是p1。同理,另一個就指向p2。如果直接呼叫 Person('sarah') 方法,由於 Person()的作用域是全域作用域,那麼內部this就會指向window.

也就是說,this就是個替代品,指向的未來可能涉及的對象。它是不確定的。內部定義的屬性指向也會跟著改變。

但是像題主所採用的物件字面量形式,屬性name的指向是確定的,它就是屬於person。題主定義的 person 物件等於我這裡的p1。

另外,如樓上所說,json就是一種資料格式啦。方便前後台傳輸資料。

不知道說清楚沒。 。 。新手作答。

曾经蜡笔没有小新

物件字面量創建物件不是這麼寫的吧
右面的部份明顯是JSON 格式,只接受Key-Value 的形式

JSON和對象的區別
舉個栗子

var obj ={ "you" : "a good boy" }
右面的部分就是你提到的JSON
不管是寫到.json 裡還是.js 裡都一樣
其實就是一種資料格式就長成這樣子

至於對象 萬物都是對象嘛 對像是個比較抽象的說法

構造器都是.json ? 對啊 都是一種資料格式嘛

世界只因有你

第一個問題你得問問Brendan Eich
問他為啥當初JavaScript要這麼設計。

至於第二個問題,JSON是一種資料格式,而物件…就假定你說的是JavaScript吧,物件是JavaScript的一種資料類型

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板