javascript "класс", выполняющий функцию внутри функции - PullRequest
0 голосов
/ 19 ноября 2011

У меня есть класс javascript, который выглядит следующим образом:

function xyPoint(x, y)
{
    this. x = x;
    this.y = y;

    this.hasX = function()
    {
        return (this.x != null);
    }

    this.dumbFunction = function()
    {
        if (this.hasX())
            //do something
    }
}

Как мне заставить this.hasX() выполнить?Это не похоже на работу.

Ответы [ 2 ]

2 голосов
/ 19 ноября 2011

Используя этот шаблон, вы съедаете память, как конфеты, вы создаете новое закрытие каждый раз, когда вы создаете экземпляр xyPoint .. Не определяйте никаких функций внутри конструктора. Используйте объект-прототип, чтобы они определялись только один раз:

function xyPoint(x, y)
{
    this. x = x;
    this.y = y;

}

xyPoint.prototype = {

    constructor: xyPoint,

    hasX: function(){
    return (this.x != null);
    },

    dumbFunction: function(){

        if (this.hasX())
        //do something

    }

};

Теперь, когда важная вещь была сказана ... вы бы использовали это так (обе версии):

var a = new xyPoint( 1,2 );
a.hasX() //true
1 голос
/ 19 ноября 2011
new xyPoint(1,1).hasX(); // true
...