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

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 に答える
1

var testThis =新しいFormRowData();

于 2012-08-07T18:53:17.453 に答える