我真的試圖打破setters和getters來理解他們。 我認爲,如果有一個條件的制定者可採用:使用setters和getters
var Temperature = {}
Temperature.closure = null
var init = {}
init.get = function() {
\t return this.closure
}
Object.defineProperty(Temperature, "b", init)
init = {}
init.set = function(arg) {
\t if (arg > -459.67) { // sanity check to make sure it's above 0 degrees Kelvin
\t \t this.closure = arg
\t }
}
Object.defineProperty(Temperature, "c", init)
console.log(Temperature.b); // null
Temperature.c = 32;
console.log(Temperature.b); // 32
Temperature.c = -5000
console.log(Temperature.b); // still 32
我希望做的是擺脫了.B和.C讓我可以的只是說
Temperature = 32
或
console.log(Temperature)
您想'溫度= 32'做究竟是什麼? –
我想知道你的兩個屬性是否共享相同的init對象,這可能是一個問題。當使用'defineProperty'時,你可以(也應該)直接傳遞一個對象字面值:'Object.defineProperty(Temperature,「b」,{get:function(){}})' –
@RocketHazmat它們沒有共享同一個對象。 –