この(正確な)構文を達成することは可能ですか
私の答えは:いいえ。
なぞなぞを解決するために次のことを試しましたが、うまくいかないようです。
それでも、私はこれが進むべき道だと思います。
免責事項: これは単なる謎解きであり、実際のコードではありません。
var Queue = function () {};
Queue.prototype.sizeValue = 2;
Queue.prototype.size = function ()
{
return this.sizeValue;
};
Queue.prototype.pop = function ()
{
// EDIT: yes, it's not popping anything.
// it just reduces size to make toString()
// and valueOf() return nulls.
this.sizeValue -= 1;
};
Queue.prototype.valueOf = function ()
{
if (this.size() > 0) {
return this.sizeValue;
}
return null;
};
Queue.prototype.toString = function ()
{
if (this.size() > 0) {
return "Queue["+this.sizeValue+"]";
}
return null;
};
var test = new Queue();
while (test) {
test.pop();
if (test.size() < -1) {
// just to get you out of the loop while testing
alert("failed");
break;
}
}
alert("out:"+test);
toString() および valueOf() 内にアラートを配置して、条件によってトリガーされないことを確認しますwhile (test) {}
。