為什麼var obj = {}建立物件的方法裡面不能用this.xxx來宣告屬性 ?
var obj = {}
this.xxx
如:
var person = { this.name = '背锅侠'; }
就會報錯.看了下它的建構器也是Object啊.會什麼會有這樣.另外問下.json和物件有啥區別?
Object
.json
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要這麼設計。
Brendan Eich
JavaScript
至於第二個問題,JSON是一種資料格式,而物件…就假定你說的是JavaScript吧,物件是JavaScript的一種資料類型。
JSON
this的指向是未來不確定的呼叫者,跟作用域有關。誰呼叫函數,函數內部的this就指向誰。
以上使用 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的一種資料類型。