为什么我不能在javascript中访问这个变量?

时间:2012-08-07 18:51:28

标签: javascript

我创建了一个对象,我想访问该对象中的变量。但每次我运行它,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>

3 个答案:

答案 0 :(得分:1)

var testThis = new FormRowData();

答案 1 :(得分:1)

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

看起来你打算将它用作构造函数,所以:

var testThis = new FormRowData(); 

这应解决这两个问题。

答案 2 :(得分: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