ken0510
2016-10-14 15:48:51
function makePerson(first, last) { ?// ?聲明makePerson 這個函數的時候 first ?last 是函數的參數? ? return {? ? ? ? first: first,? ? ? ? last: last, // ?那么 在函數里面,first:first 的意思代表什么 ?為什么不是用var 聲明的變量 ?兩個first分別代表什么 哪個對應里 之前的參數first????? ? ? ? fullName: function() {? ? ? ? ? ? return this.first + ' ' + this.last;? ? ? ? },? ? ? ? fullNameReversed: function() {? ? ? ? ? ? return this.last + ', ' + this.first;? ? ? ? }? ? }}s = makePerson("Simon", "Willison");s.fullName();?s.fullNameReversed();?
3 回答
已采納

qq_沖哥_0
TA貢獻40條經驗 獲得超30個贊
調用makePerson函數,返回的是一個對象,就是
s =?
?{
??? ? ? first: first,
? ? ? ? last: last, // 第一個first 代表屬性,第二個first 代表傳進來的參數,動態添加屬性值。
? ? ? ? fullName: function() {
? ? ? ? ? ? return this.first + ' ' + this.last;
? ? ? ? },
? ? ? ? fullNameReversed: function() {
? ? ? ? ? ? return this.last + ', ' + this.first;
? ? ? ? }
? ? }}
這么看,s 就相當于,我們平時聲明的對象字面量,first ?和 last 就相當于增加的屬性,只不過這里的屬性值是通過參數傳進來的。 效果就是下面這樣。
var s = {
????first: "Simon",
????last :"Willison"
}

一瞬兒光
TA貢獻178條經驗 獲得超70個贊
函數里面的變量也是需要用var來聲明的。但是你這個函數里面的first和last這兩個不是變量,是對象的屬性,對象屬性不需要聲明。var一個變量的時候就是表示在內存里開辟一個固定大小的空間來存儲變量。參數是按照名稱對應的,函數內部的first就是參數的first,last就是參數的last。
添加回答
舉報
0/150
提交
取消