808 /** 809 * ECMA 11.8.6 - The strict instanceof operator - generic implementation 810 * 811 * @param obj first object to compare 812 * @param clazz type to check against 813 * 814 * @return true if {@code obj} is an instanceof {@code clazz} 815 */ 816 public static boolean INSTANCEOF(final Object obj, final Object clazz) { 817 if (clazz instanceof ScriptFunction) { 818 if (obj instanceof ScriptObject) { 819 return ((ScriptObject)clazz).isInstance((ScriptObject)obj); 820 } 821 return false; 822 } 823 824 if (clazz instanceof StaticClass) { 825 return ((StaticClass)clazz).getRepresentedClass().isInstance(obj); 826 } 827 828 throw typeError("instanceof.on.non.object"); 829 } 830 831 /** 832 * ECMA 11.8.1 - The less than operator ({@literal <}) - generic implementation 833 * 834 * @param x first object to compare 835 * @param y second object to compare 836 * 837 * @return true if x is less than y 838 */ 839 public static boolean LT(final Object x, final Object y) { 840 final Object value = lessThan(x, y, true); 841 return (value == UNDEFINED) ? false : (Boolean)value; 842 } 843 844 /** 845 * ECMA 11.8.2 - The greater than operator ({@literal >}) - generic implementation 846 * 847 * @param x first object to compare | 808 /** 809 * ECMA 11.8.6 - The strict instanceof operator - generic implementation 810 * 811 * @param obj first object to compare 812 * @param clazz type to check against 813 * 814 * @return true if {@code obj} is an instanceof {@code clazz} 815 */ 816 public static boolean INSTANCEOF(final Object obj, final Object clazz) { 817 if (clazz instanceof ScriptFunction) { 818 if (obj instanceof ScriptObject) { 819 return ((ScriptObject)clazz).isInstance((ScriptObject)obj); 820 } 821 return false; 822 } 823 824 if (clazz instanceof StaticClass) { 825 return ((StaticClass)clazz).getRepresentedClass().isInstance(obj); 826 } 827 828 if (clazz instanceof ScriptObjectMirror) { 829 if (obj instanceof ScriptObjectMirror) { 830 return ((ScriptObjectMirror)clazz).isInstance((ScriptObjectMirror)obj); 831 } 832 return false; 833 } 834 835 throw typeError("instanceof.on.non.object"); 836 } 837 838 /** 839 * ECMA 11.8.1 - The less than operator ({@literal <}) - generic implementation 840 * 841 * @param x first object to compare 842 * @param y second object to compare 843 * 844 * @return true if x is less than y 845 */ 846 public static boolean LT(final Object x, final Object y) { 847 final Object value = lessThan(x, y, true); 848 return (value == UNDEFINED) ? false : (Boolean)value; 849 } 850 851 /** 852 * ECMA 11.8.2 - The greater than operator ({@literal >}) - generic implementation 853 * 854 * @param x first object to compare |