【问题标题】:Instantiating a javascript object and populating its properties in a single line实例化 javascript 对象并在一行中填充其属性
【发布时间】:2012-07-31 10:02:09
【问题描述】:

有没有办法可以在构造函数中完成所有这些操作?

  obj = new Object();
  obj.city = "A";
  obj.town = "B";

【问题讨论】:

标签: javascript


【解决方案1】:

您可以编写自定义构造函数:

function myObject(c,t) {
    this.city = c;
    this.town = t;
}

var obj = new myObject("A","B");

【讨论】:

    【解决方案2】:

    不要把事情复杂化。这是定义构造函数的最简单方法。

    var Cont = function(city, town) {
               this.city = city;
               this.town = town;
              }
    
    var Obj = new Cont('A', 'B');
    

    【讨论】:

    • 这将导致您的类中只有私有方法。通过使用原型,您可以定义可从类外部访问的方法。如果你需要私有方法,你仍然可以在构造函数中定义它们。
    • 这不会导致私有方法。请阅读javascript.crockford.com/private.html
    • 来自您的链接:“私有方法是构造函数的内部函数。”如果您在定义中声明函数,这基本上就是您最终会得到的结果。
    【解决方案3】:

    试试这个:

    function MyObject(city, town) {
      this.city = city;
      this.town = town;
    }
    
    MyObject.prototype.print = function() {
      alert(city + " " + town);
    }
    
    obj = new MyObject("myCity", "myTown");
    obj.print();
    

    【讨论】:

      【解决方案4】:
      function MyObject(params) {
          // Your constructor
          this.init(params);
      }
      
      MyObject.prototype = {
          init: function(params) {
              // Your code called by constructor
          }
      }
      
      var objectInstance = new MyObject(params);
      

      这将是原型方式,当我需要多个对象实例时,我更喜欢使用普通对象文字。

      【讨论】:

        【解决方案5】:
        function cat(name) {
            this.name = name;
            this.talk = function() {
                alert( this.name + " say meeow!" )
            }
        } 
        
        cat1 = new cat("felix")
        cat1.talk() //alerts "felix says meeow!"
        

        【讨论】:

          【解决方案6】:

          试试这个

          var obj = {
              city : "A",
              town : "B"
          };
          

          【讨论】:

            【解决方案7】:

            像这样:

            var obj = {
                city: "a",
                town: "b"
            }
            

            【讨论】:

              【解决方案8】:

              你为什么不这样做:

              var obj = {"city": "A", "town": "B"};
              

              【讨论】:

              • 城市和城镇周围的引号是可选的。
              猜你喜欢
              • 2021-08-18
              • 1970-01-01
              • 2020-12-27
              • 1970-01-01
              • 2016-11-24
              • 2011-11-01
              • 1970-01-01
              • 2010-10-28
              • 1970-01-01
              相关资源
              最近更新 更多