用于填充对象的JavaScript类

用于填充对象的JavaScript类,javascript,Javascript,我试图通过使用JavaScript类来填充对象。我甚至不确定我是否做得正确,我对JavaScript OOP非常陌生 var ImagesViewModel = {}; // Global object function ImagesClass() { this.addImage = function (iUrl) { ImagesViewModel.push({ "ImageUrl": iUrl }) //< Error is here } }

我试图通过使用JavaScript类来填充对象。我甚至不确定我是否做得正确,我对JavaScript OOP非常陌生

var ImagesViewModel = {}; // Global object

function ImagesClass() {

    this.addImage = function (iUrl) {
        ImagesViewModel.push({ "ImageUrl": iUrl }) //<  Error is here
    }

}

var k = new ImagesClass()
k.addImage("http://www.yahoo.com")
k.addImage("http://www.xbox.com")
var-ImagesViewModel={};//全局对象
函数ImagesClass(){
this.addImage=函数(iUrl){
ImagesViewModel.push({“ImageUrl”:iUrl})/
基本上,我需要一种简单的方法来使用多个属性填充
ImagesViewModel
。是否需要在
ImagesViewModel
中指定属性?也许我不需要指定全局变量就可以完成所有这些

我发现了错误

对象没有方法推送


你们想要的是一个数组而不是一个对象,push是一个数组原型上的方法,你们正试图在对象上使用它

更改:

var ImagesViewModel = {};
致:

您也可以这样做,以便
ImagesClass
的每个实例都有自己的图像集

function ImagesClass() {
    var  _images = [];

    this.addImage = function (iUrl) {
       _images.push({ "ImageUrl": iUrl }) //<  Error is here
    }

    this.getImages = function(){
      return _images;
    }
}

您想要的是数组而不是对象,push是数组原型上的一种方法,您正试图在对象上使用它

更改:

var ImagesViewModel = {};
致:

您也可以这样做,以便
ImagesClass
的每个实例都有自己的图像集

function ImagesClass() {
    var  _images = [];

    this.addImage = function (iUrl) {
       _images.push({ "ImageUrl": iUrl }) //<  Error is here
    }

    this.getImages = function(){
      return _images;
    }
}

push方法仅适用于数组,这里您尝试将()推送到对象,这就是它不起作用的原因


您需要更改
var ImagesViewModel={}
var ImagesViewModel=[]

push方法仅适用于数组,这里您尝试将()推送到对象,这就是它不起作用的原因


您需要更改
var ImagesViewModel={}
var ImagesViewModel=[]

从设计角度来看,您可能不希望viewmodel只是一个平面阵列(即使您将其声明为对象,正如其他海报所指出的)

我建议声明一个数组声明来保存ImagesViewModel对象中的图像

var ImagesViewModel = { // ViewModel generic OBJECT
  this.Images = new Array(); // prototype ARRAY object
}; 

function ImagesClass() {    
    this.addImage = function (iUrl) {    
        ImagesViewModel.Images.push({ "ImageUrl": iUrl }) 
    }

}

从设计角度来看,您可能不希望viewmodel只是一个平面阵列(即使您将其声明为对象,正如其他海报所指出的)

我建议声明一个数组声明来保存ImagesViewModel对象中的图像

var ImagesViewModel = { // ViewModel generic OBJECT
  this.Images = new Array(); // prototype ARRAY object
}; 

function ImagesClass() {    
    this.addImage = function (iUrl) {    
        ImagesViewModel.Images.push({ "ImageUrl": iUrl }) 
    }

}

这只是一个对象,而不是JSON。请注意,这个问题与JSON完全无关。您似乎混淆了JavaScript对象文本(JavaScript语言语法的结构)和JSON(一种独立于语言的数据交换格式,如XML或CSV)。我将相应地编辑您的问题。另请参见:。这只是一个对象,而不是JSON。请注意,问题与JSON完全无关。您似乎混淆了JavaScript对象文本(JavaScript语言语法的结构)和JSON(一种独立于语言的数据交换格式,如XML或CSV)。我将相应地编辑您的问题。另请参见:。明白了,在我上面的示例中,我可以在类内执行所有操作而不必声明全局变量吗?@highwingers你可以,只需在类内移动变量。明白了,在我上面的示例中,我可以在类内执行所有操作而不必声明全局变量吗?@highwingers你可以,只需在类中移动变量。