為什麼var obj = {}
建立物件的方法裡面不能用this.xxx
來宣告屬性 ?
如:
var person = {
this.name = '背锅侠';
}
就會報錯.看了下它的建構器也是Object
啊.會什麼會有這樣.另外問下.json
和物件有啥區別?
我想大声告诉你2017-07-05 10:53:33
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就是一種資料格式啦。方便前後台傳輸資料。
不知道說清楚沒。 。 。新手作答。
曾经蜡笔没有小新2017-07-05 10:53:33
物件字面量創建物件不是這麼寫的吧
右面的部份明顯是JSON 格式,只接受Key-Value 的形式
JSON和對象的區別
舉個栗子
var obj ={ "you" : "a good boy" }
右面的部分就是你提到的JSON
不管是寫到.json 裡還是.js 裡都一樣
其實就是一種資料格式就長成這樣子
至於對象 萬物都是對象嘛 對像是個比較抽象的說法
構造器都是.json ? 對啊 都是一種資料格式嘛
世界只因有你2017-07-05 10:53:33
第一個問題你得問問Brendan Eich
。
問他為啥當初JavaScript
要這麼設計。
至於第二個問題,JSON
是一種資料格式,而物件…就假定你說的是JavaScript吧,物件是JavaScript的一種資料類型。