Javascript对象属性初始化
问题描述:
我们如何初始化一个javascript
使用函数的对象属性? 一个我是想,但没有被提到如下:Javascript对象属性初始化
var myObject = {
quatntity: 3,
toalAmount: function() {
return 599*this.quatntity;
}
请你可以建议做同样的正确方法。
答
您需要创建一个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来包含这个值。
答
你缺少一个右括号:
var myObject = {
quatntity: 3,
toalAmount: function() {
return 599*this.quatntity;
}
}
您现在可以通过调用myObject.toalAmount()
或者检索该值,你可以设置一个get
运营商(如dandavis建议)来检索值myObject.toalAmount
备注 - 你应该检查你的拼写:
- quatntity =量
- toalAmount =总金额
答
要初始化对象字面方式。您可以通过使用一个功能做到这一点:
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
将私人
我看不出有任何的问题在这里;什么不是你认为应该发生的事情? – ndugger