Javascript类,构造函数和种子值

时间:2011-04-29 11:32:39

标签: javascript


  以下查询的帮助将帮助我开始并澄清许多疑问。到目前为止,我读过我可以通过函数语句在JS中使用类,并使用JSON表示法来保存对象值。所以,在下面的代码中

  1. 如何编写包含某些形状值的testData变量
  2. 如何从testData初始化Shape对象。我可以通过分配每个成员

    来创建对象
    var obj = {
                x: testData[i].x,
                  y: testData[i].y,
                ...      
            };
    
  3. 这是正确的方法,还是我们可以使用here

    所述的构造函数
    var testData = [ {}, {} ]
    
    
    //Shape class
    
    var Shape = function(x, y, w, h) {
            this.x = x;
            this.y = y;
            this.w = w;
            this.h = h;
            this.calculateArea = function() {
                alert("Area..");
    };
    
    
    func test() {
    var arr = [];
    for (var i=0,l=testData.length; i<l; i++) {
           var s = testData[i];
               var obj = // how to construct Shape object here  through constructor          
            };
    arr.push(obj);
    
    }
    

4 个答案:

答案 0 :(得分:1)

您可以使用Shape关键字构建一个新对象(在本例中为new)。所以你会使用:

var obj = new Shape(testData[i].x, testData[i].y, testData[i].w, testData[i].h);

答案 1 :(得分:1)

假设您需要将testData作为JSON从服务器等传输。

testData = [{ x: 1, y: 1, w: 1, h: 1}, ...]

然后,@ digitalFish建议您可以通过

从每个测试数据元素创建Shape对象
var obj = new Shape(s.x, s.y, s.w, s.h);
arr.push(obj);

答案 2 :(得分:0)

new运算符允许您通过其构造函数实例化对象。

var circle = new Shape(x, y, width, height);

此外,它不被称为 JSON表示法(它将是JavaScript Object Notation Notation),它被称为对象文字表示法

答案 3 :(得分:0)

当需要.apply时,new运算符可能会在某些边缘情况下导致问题。我相信最好的方法如下。这也是一个小干,因为你不会在整个过程中重复'这个'。

var createShape = function(x, y, w, h) {
    return {
        x: x,
        y: y,
        w: w,
        h: h,
        calculateArea: function() {
            alert("Area..");
        }
    };
};
var a = createShape(1,2,3,4);
var b = createShape(4,3,2,1);
console.log(a, b);