ひどいjavascriptコードの可能性について私に許してください。私は左に十分なスペースを持っている最初のデスクトップを見つけレイヤクラスのメソッドを作成しようとしているJavascriptでオブジェクトのプロパティを2回質問できません
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));
これが私の最初の時間が... JavaScriptで何かをしようとしています。これを達成するために、私のコードを試しているうちに、私は何らかの理由でdesktop.size()プロパティを呼び出すときに初めて正しい値を取得したが、スクリプトをもう一度呼び出すとそれが消滅することがわかりました。これは出力です
1
hi
TypeError: Result of expression 'this.desktops[i]' [undefined] is not an object.
最初の印刷はうまくいきますが、別の時間に同じ機能を実行できないのはなぜですか?
(あなたは非常に有用だろう私のコードを改善するために、他のアドバイスを、持っている場合)
'、使用下の行に
2
に設定されています'console.log'を開き、通常はキーボードで' F12'を押してコンソールを開きます。 – Mouser@ Mouser私はブラウザでJavaScriptを使用していませんが、KDE PlasmaのWMコンソール内で、このチュートリアルではKWinを通じて提供されているprint()の使用を提案しています。したがって、print()の使用はありますが、あなたの提案には大変感謝しています:) – LinG