2016-03-04 135 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将私人