2016-03-04 143 views
-2

我們如何初始化一個javascript使用函數的對象屬性? 一個我是想,但沒有被提到如下:Javascript對象屬性初始化

var myObject = { 
     quatntity: 3, 
     toalAmount: function() { 
      return 599*this.quatntity; 
     } 

請你可以建議做同樣的正確方法。

+3

我看不出有任何的問題在這裏;什麼不是你認爲應該發生的事情? – ndugger

回答

2

您需要創建一個getter來讀取文字中的同級值。

您忘記了get操作:

var ob={ 
     quatntity: 3, 
     get toalAmount() { 
      return 599*this.quatntity; 
     } 
}; 

alert(JSON.stringify(ob)); 

對他們漂亮的部分是,toalAmount會自我更新爲其他值的值更改,但它仍然是序列化,能。

很多鄉親忘記干將,或認爲這是一個ES6的事情(有點貌似),但由於IE8/ES5他們已經出現......

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get

您可能還需要簡單地把它作爲一種傳統的方法,你需要「()」來使用,特別是如果你不需要JSON來包含這個值。

0

你缺少一個右括號:

var myObject = { 
     quatntity: 3, 
     toalAmount: function() { 
      return 599*this.quatntity; 
     } 
} 

您現在可以通過調用myObject.toalAmount()

或者檢索該值,你可以設置一個get運營商(如dandavis建議)來檢索值myObject.toalAmount

備註 - 你應該檢查你的拼寫:

  • quatntity =量
  • toalAmount =總金額
0

要初始化對象字面方式。您可以通過使用一個功能做到這一點:

var myObject = function(){ 
    var quantity = 3; //private variable 
    return { 
     totalAmount: function(){ 
     return 599*quantity; 
     } 
    } 
}() 

的通知()的函數結束,所以我們在呼喚它,結果賦給mybject。如果你想修改數量變量,你可以在返回值創建函數二傳手:

var myObject = function(){ 
    var quantity = 3; //private variable 
    return { 
     totalAmount: function(){ 
     return 599*quantity; 
     }, 
     setQuantity: function(value){ 
     quantity = value; 
     } 
    } 
}() 

您還可以創建一個構造函數,並使用new到實例的新對象:

var MyObject = function(){ 
    this.quantity = 3; //public variable 
    this.totalAmount = function(){ 
     return 599*this.quantity; 
    } 
} 
var myObject = new MyObject(); 
myObject.totalAmount(); //1797 

的構造函數通常用大寫字母書寫。

當您使用功能的一個對象,this.前綴的變量將是公開的,var將私人