0

我创建了一个对象,我想访问该对象中的变量。但是每次我运行它时,testThis 和 whatThis 变量都是未定义的。我不确定为什么会这样。

/* HTML above */
<script type="text/javascript">
    var formData;
    var dataClickTest;

    var FormRowData = function () {
        var self = this;

        self.someValue = "I am visible. Look Here!";

        self.frds = new Array();

        self.addRowData = function (ctrlData) {
            self.frds.push(ctrlData);
        }

        self.convertData = function (rowData) {
            var hi = rowData[0].attr('data-ctrltypeid');
            var hello = "hi";
        }
    }



    function postBackPart(div_id) {

        formData = $('#' + div_id).find('input, select').filter('[name*=".InputtedData"]');

        var testThis = FormRowData();      /* error here */
        var whatThis = testThis.someValue; /* error here */     

        $.ajax({
            url: '/TestEdit/Sections',
            type: 'POST',
            data: formData,
            success: function (result) {
            }
        });

        return false;
    }
</script>

</body>
</html>
4

3 回答 3

1

var testThis = new FormRowData();

于 2012-08-07T18:53:17.453 回答
1

FormRowData没有return语句,并且您没有使用new将其视为构造函数的关键字调用它,因此它返回undefined.

看起来您打算将其用作构造函数,因此:

var testThis = new FormRowData(); 

这应该可以解决这两个问题。

于 2012-08-07T18:53:52.360 回答
1

由于您实际上并未使用原型,因此您可以new完全跳过:

var FormRowData = function () {
    var self = {};

    self.someValue = "I am visible. Look Here!";

    self.frds = new Array();

    self.addRowData = function (ctrlData) {
        self.frds.push(ctrlData);
    }

    self.convertData = function (rowData) {
        var hi = rowData[0].attr('data-ctrltypeid');
        var hello = "hi";
    }

    return self;
}

等效于您的代码而不需要new

于 2012-08-07T18:55:46.650 回答