2016-01-29 69 views
1

這裏是我的代碼:爲什麼我變得不確定?

var person = { 
    name: 'Greg', 
    year: 20 
}; 
Object.defineProperties(person, { 
    gender :{ 
     value: 'male' 
    }, 
    edition : { 
     value : 12 
    }, 
    edition : { 
     set:function (No) { 
      if (No===13) { 
       console.log('Yes') 
      }; 
     } 
    } 

}) 
console.log(person.edition) 

看起來像我做了所有正確的,並沒有改變描述 什麼想法? 感謝

回答

1

當你寫person.edition,你調用get方法。哪一個沒有定義。要調用set方法,您需要執行assignment。試試這個:

var person = { 
 
    name: 'Greg', 
 
    year: 20 
 
}; 
 
Object.defineProperties(person, { 
 
    "gender" :{ 
 
     value: 'male' 
 
    }, 
 
    "edition" : { 
 
     value : 12 
 
    }, 
 
    "edition" : { 
 
     set:function (No) { 
 
      if (No===13) { 
 
       console.log('Yes') 
 
      }; 
 
     } 
 
     , get:function () { 
 
      return "hi"; 
 
     } 
 
    } 
 

 
}) 
 
console.log(person.edition) 
 
person.edition = 13;

+0

你在哪裏看到'GET'方法? – Rayon

+1

@RayonDabre'GET'是[吸氣劑](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get),而不是一個方法。它在您訪問'edition'屬性時會自動調用。這裏是一個[教程](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects#Defining_getters_and_setters),如果你不熟悉的getter和setter。 –

+0

我的新東西!詳細的解釋將有助於! – Rayon

相關問題