邏輯操作符的基底類型
邏輯操作符包括一元和二元類型,因此有兩個基底類型
檔案:OperatorLogicBase.js
function OperatorBinaryLogicBase() {<br /> this.DeriveFrom(new OperatorBinaryBase());<br /> this.set_ClassName("OperatorBinaryLogicBase");<br /> this.set_Sign("undefined");<br />};</p><p>function OperatorUnaryLogicBase() {<br /> this.DeriveFrom(new OperatorUnaryBase());<br /> this.set_ClassName("OperatorUnaryLogicBase");<br /> this.set_Sign("undefined");<br />};
邏輯操作符的實現
檔案:OperatorLogic.js
function OperatorLogicAnd() {<br /> this.DeriveFrom(new OperatorBinaryLogicBase());<br /> this.set_ClassName("OperatorLogicAnd");<br /> this.set_Sign("&&");<br />};</p><p>OperatorLogicAnd.prototype.Evaluate = function(operands) {<br /> var values = this._getTwoNumberOperands(operands);</p><p> return new OperandBoolean(values[0].get_Value() && values[1].get_Value());<br />};</p><p>function OperatorLogicOr() {<br /> this.DeriveFrom(new OperatorBinaryLogicBase());<br /> this.set_ClassName("OperatorLogicOr");<br /> this.set_Sign("||");<br />};</p><p>OperatorLogicOr.prototype.Evaluate = function(operands) {<br /> var values = this._getTwoNumberOperands(operands);</p><p> return new OperandBoolean(values[0].get_Value() || values[1].get_Value());<br />};</p><p>function OperatorLogicNot() {<br /> this.DeriveFrom(new OperatorUnaryLogicBase());<br /> this.set_ClassName("OperatorLogicOr");<br /> this.set_Sign("!");<br />};</p><p>OperatorLogicNot.prototype.Evaluate = function(operands) {<br /> var val = this.GetOneNumberOperand(operands);</p><p> return new OperandBoolean(!val.get_Value());<br />};<br />