0

私はJavaScriptでのOOPコーディングの初心者です。

クラスのサイズを設定しようとしています。しかし、コードにエラーがありました。

    (function($) {

    Block = function() {
        var self = this;
        this.el = $('<div></div>');
    }

    Block.prototype.appendTo = function(parent) {
        this.el.appendTo(parent);
    }

    Block.prototype.setSize = function(width, height) {
        var self = this;
        this.width = width;
        this.height = height;
    }

})(jQuery);

これは私がクラスを呼び出す方法です:

var block1 = new Block();
block1.appendTo('body').setSize(100,100);

コンソールで私は得る:

Uncaught TypeError: Cannot call method 'setSize' of undefined 
4

1 に答える 1

1

setSizeの戻り値を呼び出していますappendTo。ただし、appendTo何も返さない ( undefined) ため、呼び出しを試みるとエラーがスローsetSizeされます。

これに対する解決策は、次のように関数Blockからオブジェクトを返すことです。appendTo

(function($) {

    Block = function(width, height) {
        this.el = $('<div></div>');
        if (width !== undefined && height !== undefined) {
            this.width = width;
            this.height = height;
        }
    }

    Block.prototype.appendTo = function(parent) {
        this.el.appendTo(parent);
        return this;
    }

    Block.prototype.setSize = function(width, height) {
        this.width = width;
        this.height = height;
    }

})(jQuery);
于 2012-12-11T23:08:38.853 に答える