Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript对象属性初始化_Javascript - Fatal编程技术网

Javascript对象属性初始化

Javascript对象属性初始化,javascript,Javascript,如何使用函数初始化javascript对象属性? 下面是我尝试但失败的一个: var myObject = { quatntity: 3, toalAmount: function () { return 599*this.quatntity; } 请您建议正确的方法来执行相同的操作。您需要创建一个getter来读取文本同级值 您忘记了get操作符: var ob={ quatntity: 3,

如何使用函数初始化
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
的值会随着其他值的更改而自我更新,但它仍然可以序列化

很多人忘记了getter,或者认为它是ES6的东西(看起来有点像),但他们从IE8/ES5开始就存在了


您可能还想简单地将其作为一种传统方法,即您需要使用“()”的那种方法,特别是如果您不需要JSON来包含该值。

您缺少一个右括号:

var myObject = {
        quatntity: 3,
        toalAmount: function () {
            return 599*this.quatntity;
        }
}
现在,您可以通过调用
myObject.toalAmount()

或者,您可以设置一个
get
操作符(如dandavis建议的那样)以将值检索为
myObject.toalAmount

旁注-您应该检查拼写:

  • 数量=数量
  • toalAmount=总金额

    • 您正在以文本方式初始化对象。您可以使用以下函数来执行此操作:

      var myObject = function(){
          var quantity = 3; //private variable
          return {
            totalAmount: function(){
               return 599*quantity;
            }
          }
      }()
      
      请注意函数末尾的(),因此我们调用它并将结果分配给MyObject。如果要修改quantity变量,可以在返回值中创建函数setter:

      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
      将是私有的

      我在这里看不到任何问题;什么是你认为不应该发生的?