Étant donné que vous ne pouvez pas accéder aux propriétés des méthodes soeurs dans un objet javascript, j'ai utilisé la méthode prototype pour étendre ces propriétés.Corriger l'architecture pour les objets prototypes
var ColorGen = function ColorGen() {}
ColorGen.prototype = {};
ColorGen.prototype.settings = {
gridContainer : 'gridContainer',
xSquareCount : 50,
ySquareCount : 50,
xLength : 500,
yLength : 500,
gridArr : []
};
ColorGen.prototype.totalSquares = function() {
return (this.settings.xSquareCount * this.settings.ySquareCount);
};
ColorGen.prototype.squareDim = function(length, count) {
return Math.round(length/count);
};
ColorGen.prototype.hueStep = function() {
return (360/this.totalSquares());
};
ColorGen.prototype.populateGrid = function() {
var width = this.squareDim(this.settings.xLength, this.settings.xSquareCount),
height = this.squareDim(this.settings.yLength, this.settings.ySquareCount);
for(var i=0, k = this.settings.xSquareCount * this.settings.ySquareCount; i < k; i++) {
var square = document.createElement('DIV');
square.setAttribute("style", "background: hsla("+(Math.round(this.hueStep() * i))+", 100%, 50%, 1.0); width: "+width+"px; height: "+height+"px; display: inline-block; position: relative;");
this.settings.gridArr.push(square);
}
};
ColorGen.prototype.setGridContainer = function() {
document.getElementById(this.settings.gridContainer).setAttribute('style', 'width: '+this.settings.xLength+'px; height: '+this.settings.yLength+'px; position: relative; overflow: hidden;');
}
ColorGen.prototype.appendGrid = function() {
var gridSquares = this.settings.gridArr;
for(square in gridSquares) {
if (document.getElementById(this.settings.gridContainer) !== null) {
document.getElementById(this.settings.gridContainer).appendChild(gridSquares[square]);
}
}
}
var colorgen = new ColorGen();
colorgen.setGridContainer();
colorgen.populateGrid();
colorgen.appendGrid();
Voici le violon: http://jsfiddle.net/Ua6Mp/embedded/result/
Question: Est-ce une utilisation appropriée de la méthode prototype? Si ce n'est pas le cas, quelle est la convention pour étendre l'accès aux propriétés d'une méthode soeur?
Je ne suis peut-être pas en train de le formuler correctement. S'il vous plaît ne hésitez pas à modifier cette question si vous pensez qu'il pourrait être décrit plus clairement
Méthodes d'une propriété qui est un frère ou une sœur d'une autre méthode du même objet parent. Désolé si je ne décris pas très bien ... – monners
un exemple de ce serait mieux ... probablement des commentaires en ligne dans votre code. –
une note: vous écrasez 'ColorGen.prototype = {}'. il va perdre la propriété 'constructor'. – rab