2013-04-18 5 views
0

У меня есть часть кода javascript, для которой я хочу добавить пространство имен. В этом коде есть операция присваивания, которая вне функций. Может кто-нибудь, пожалуйста, скажите мне, как положить это в пространство имен? Кодекс приведен ниже.Предоставление пространства имен в файле javascript при наличии оператора присваивания

var mynameSpace={ 
canvasPanel:{}, 
stage:{}, 
someShape:{}, 

drawLineGraph:function(dataList,color,baseY) 
{ 
//Create a shape 
this.dataList=dataList; 
this.index=0; 
this.currentDay=1; 
}, 

myNameSpace.drawLineGraph.prototype = new createjs.Shape(); //Getting the problem here 
myNameSpace.drawLineGraph.prototype.constructor = drawLineGraph; //Getting the problem here** 
, 
drawLegend:function(){ 
} 

}; 

ответ

1

Вы можете обернуть функцию и последующие назначения в другой функции, а затем вызвать его немедленно, как это:

drawLineGraph: (function() { 
    var f = function(dataList, color, baseY { 
     // Create a shape 
      ... function code ... 
    }; 
    f.prototype = new createjs.Shape(); 
    ... more assignments ... 

    return f; // this will be assigned to drawLineGraph 
})(), 
+0

Спасибо, Артем за ответ. –

0

Просто замените drawLineGraph с this.drawLineGraph.

0

Похоже, что вы делаете прототипы заданий внутри объекта буквального определения. Таким образом, свойство drawLineGraph mynameSpace не существует, когда вы пытаетесь изменить его прототип. Переместите назначения свойств прототипа drawLineGraph ниже литерала объекта.

var mynameSpace={ 
    canvasPanel:{}, 
    stage:{}, 
    someShape:{}, 

    drawLineGraph:function(dataList,color,baseY) 
     { 
     //Create a shape 
     this.dataList=dataList; 
     this.index=0; 
     this.currentDay=1; 
    }, 

    drawLegend:function(){ 
    } 

}; 
myNameSpace.drawLineGraph.prototype = new createjs.Shape(); //No longer a problem 
myNameSpace.drawLineGraph.prototype.constructor = drawLineGraph; //No longer a problem