为什么我的javascript对象在构造之后是空的

时间:2014-05-29 08:36:30

标签: javascript jquery knockout.js

我使用Knockout.js,我的脚本中有一个名为letter的对象。该代码如下所示:

function letter(filePath, imagePath, countryId) {
    self.filePath = filePath;
    self.imagePath = imagePath;
    self.countryId = countryId;
}

然后,在我的代码中的另一个地方,以下代码段运行:

  var uploadedLetter = new letter(data.key,'',59);
  viewModel.letters.push(uploadedLetter);

我知道我的data.key是一个普通的字符串值。

我的viewModel代码是这样的:

var SendWindowedLetterViewModel = function(formSelector, data) {
    var self = this;
    self.letters = ko.observableArray([]);
}

在我的观点上应用绑定:

   var createLetterData = {
    };

    var viewModel = new SendWindowedLetterViewModel('#sendLetterForm', createLetterData);
    ko.applyBindings(viewModel, document.getElementById('sendLetterForm'));

但是,当我在运行此行后查看FireBug时,我有以下输出:

enter image description here

我无法访问我的任何属性,如果我在FireBug中查找对象,它似乎是100%为空。

可能是StackOverflow上有史以来最简单的问题,但我在这里忽略了什么?

1 个答案:

答案 0 :(得分:1)

letter中,您使用self.filePath = filePathself并未在其范围内的任何位置定义。

所以你要么

function letter(filePath, imagePath, countryId) {
    var self = this;
    self.filePath = filePath;
    self.imagePath = imagePath;
    self.countryId = countryId;
}

或直接

function letter(filePath, imagePath, countryId) {
    this.filePath = filePath;
    this.imagePath = imagePath;
    this.countryId = countryId;
}