Pardonnez-moi pour ce qui pourrait être le code javascript terrible. Ceci est ma première fois d'essayer quelque chose javascript ...Impossible de demander la propriété d'objet deux fois en Javascript
function Tile (window_id, size)
{
this.window_id = window_id;
this.size = size;
};
function Desktop()
{
this.tiles = [];
this.ntiles = function() {return this.tiles.length;};
this.size = function()
{
var sum = 0;
for (i = 0; i < this.ntiles(); i++) {sum += this.tiles[i].size;};
return sum;
};
this.addTile = function (tile)
{
if (this.size() === 1) {return -1;};
this.tiles.push(tile);
return 0;
};
};
function Layer()
{
this.desktops = [];
this.ndesktops = function() {return this.desktops.length;};
this.addDesktop = function (desktop)
{
this.desktops.push(desktop);
return 0;
};
this.availableDesktopSize = function (size)
{
for (i = 0; i < this.ndesktops(); i++)
{
print(this.desktops[i].size());
print('hi');
print(this.desktops[i].size());
print('hihi');
var space = 1.0 - this.desktops[i].size();
print('hihihi');
print(space);
print(size);
if (space >= size) {return i;};
};
return -1;
};
};
var layer = new Layer();
var desktop1 = new Desktop();
var desktop2 = new Desktop();
var tile = new Tile(100, 0.5);
desktop1.addTile(tile);
desktop1.addTile(tile);
desktop2.addTile(tile);
layer.addDesktop(desktop1);
layer.addDesktop(desktop2);
print(layer.availableDesktopSize(0.51));
print(layer.availableDesktopSize(0.49));
Je suis en train de faire une méthode pour la classe de couche qui trouve le premier bureau qui a assez d'espace. En essayant d'y parvenir, tout en essayant mon code, j'ai observé que pour une raison quelconque lorsque j'appelle la propriété desktop.size(), j'obtiens la bonne valeur la première fois mais quand je l'appelle une deuxième fois, mon script meurt. C'est la sortie
1
hi
TypeError: Result of expression 'this.desktops[i]' [undefined] is not an object.
Donc, il fait la première impression bien, mais pourquoi ne peut-il pas faire exactement la même fonction une autre fois?
(Si vous avez d'autres conseils pour améliorer mon code, ce serait très utile)
'print' ouvre la boîte de dialogue d'impression, l'utilisation 'console.log', puis ouvrez la console en tapant' F12' sur votre clavier. – Mouser
@Mouser Je n'utilise pas javascript dans un navigateur, mais dans la console WM de KDE Plasma et le tutoriel suggéré d'utiliser print() tel qu'il est fourni par KWin. D'où l'utilisation de print(), mais merci beaucoup pour votre suggestion néanmoins :) – LinG