Конструктор для прототипа в Javascript - PullRequest
1 голос
/ 15 ноября 2011

В файле meterA.js у меня есть

    window.MeterA = function(options)
    {
        return this.init(options);
    }

   MeterA.prototype = {
        init: function(options) {
            this.container = options.container;
            this.width = options.width;
            this.height = options.height;
            this.sliderSize = options.sliderSize;
            var Canvas = {
                meter: TBE.CreateRectCanvasElement (displayWidth, displayHeight),
                slider: TBE.CreateSquareCanvasElement (sliderSize)
            };
            Container.appendChild (Canvas.meter);
            Container.appendChild (Canvas.slider);
        }
    }

Затем в файле pane.html я попытался инициализировать счетчик:

var MeterA = new MeterA({
    container:  Div.meterA, 
    width:      GetNumberIgnoreUnit(Div.speedMeter.style.width, 2), 
    height:     GetNumberIgnoreUnit(Div.speedMeter.style.height, 2), 
    sliderSize: 10
});

Но я получаю "MeterA не конструктор" как ошибку, почему это так?

Ответы [ 2 ]

0 голосов
/ 15 ноября 2011

Smth по этим направлениям должно работать:

var MeterA = (function () {

    // constructor
    var MeterA = function (options) {
        this.init(options);
    };

    // prototype
    MeterA.prototype = {
        init: function (options) {
            console.log(options);
        }
    };

    return MeterA;

})();

obj = new MeterA({
    opt1: 'sasa',
    opt2: false
});

Я рекомендую Шаблоны Javascript 2010 для более глубокого обзора шаблона конструктора.

Еще один хорошийпрочитайте о javascript Основные шаблоны проектирования JavaScript для начинающих, том 1.

0 голосов
/ 15 ноября 2011
var MeterA = new MeterA({ ...

Я считаю, что проблема заключается в использовании MeterA в качестве имени переменной и имени класса.Объявления переменных в Javascript «подняты» в начало функции, поэтому MeterA становится неопределенной

Здесь есть несколько хороших объяснений: http://net.tutsplus.com/tutorials/javascript-ajax/quick-tip-javascript-hoisting-explained/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...