【问题标题】:How to make array at javascript class?如何在javascript类中制作数组?
【发布时间】:2012-11-24 03:54:27
【问题描述】:

最近在学习做javascript类,看到别人这样做类

var item = {
     'a':{'b':1000,'c':2000,'d':3000} , //how to make a variable become an array?
     myfunction : function(){
         console.log(item.a.b); //and output item.a[1]?
     }
 };
 item.myfunction();

但是可以将变量a 设为数组吗?并像那样输出一个变量item.a[1]?我试过了

var a=new Array('1000','2000','3000') 但是错误,我需要正确的语法。

【问题讨论】:

  • 如果你不需要'b''c''d',那么你应该可以使用你所拥有的,甚至更好:'a':[1000, 2000, 3000],

标签: javascript jquery html


【解决方案1】:
var item = {
    'a': [1000, 2000, 3000],
    myfunction: function () {
        console.log(this.a[1]);
    }
};

但这不是一个类,也没有“变量a”。

【讨论】:

  • 谢谢,但我想这是一个类,如果我使用 var item2 = new item(); ?
  • 不,JavaScript 没有类(new 接受一个函数,所以new item 会出错)。
  • 该页面上的第一句话:“JavaScript 是一种无类、面向对象的语言”。 new Object() 有效,因为Object 是一个预定义的函数。至于new究竟做了什么,见MDN
  • 最后一句话:“我现在认为我早期尝试在 JavaScript 中支持经典模型是一个错误。”
【解决方案2】:
'a':[1000,2000,3000]

console.log(item.a[0]); // 1000
console.log(item.a[2]); // 3000

阅读更多:http://www.elated.com/articles/javascript-array-basics/

【讨论】:

  • 所以如果我用这个,它会是一个类吗?功能水果(大小,种类,颜色){ this.sizes = 大小; this.kind = 种类; this.colors = 颜色; this.mix = function(){ return this.sizes+this.kind; } } var apple = new fruits(1,1,'red');
【解决方案3】:

您有 2 种方法,具体取决于您是将“a”转换为数组还是只想将“a”转换为数组。

第一种方法是通过函数运行它

function toArray(object) {
    var array = new array();
    for (key in object) {
        if (object.hasOwnProperty(key)) {
            array.push(object);  // This is alternative for indexed array
            array[key] = object; // This is for an associative array
        }
    }
    return array;
}

也许让你的“类”调用这个函数并将返回值分配给“a”

var item = {
    'a':{'b':1000,'c':2000,'d':3000} , //how to make a variable become an array?
    myfunction : function(){
        this.a = toArray(this.a);
        console.log(this.a[1]) // If you do indexed
        console.log(this.a.b); // If you do associative
    }
};

item.myfunction();

@ahren 解释了第二种方法,它只是通过 [...] 值而不是 {...}

将“a”定义为数组

你也可以查看我自己提出的关于 JavaScript 中 OOP 的问题,得到了 T.J. 的一个很好的答复。关于私有方法。

JavaScript OOP Pitfalls

不知道这是否是您想要的,但应该可以。

【讨论】:

    猜你喜欢
    • 2020-01-13
    • 2021-10-27
    • 2023-04-10
    • 1970-01-01
    • 2022-06-24
    • 2017-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多