Class ScriptObjectMirror

    • 方法详细信息

      • equals

        public boolean equals​(Object other)
        描述从类别复制: Object
        指示一些其他对象是否等于此。

        equals方法在非空对象引用上实现等价关系:

        • 自反性 :对于任何非空的参考值xx.equals(x)应该返回true
        • 它是对称的 :对于任何非空引用值xyx.equals(y)应该返回true当且仅当y.equals(x)回报true
        • 传递性 :对于任何非空引用值xy ,并z ,如果x.equals(y)回报truey.equals(z)回报true ,然后x.equals(z)应该返回true
        • 它是一致的 :对于任何非空参考值xy ,多个调用x.equals(y)一致返回true或一致返回false ,只要在equals对对象进行比较的信息进行修改。
        • 对于任何非空的参考值xx.equals(null)应该返回false

        equals类方法Object实现对象上差别可能性最大的相等关系; 也就是说,对于任何非空参考值xy ,当且仅当xy引用相同对象( x == y的值为true )时,此方法返回true

        请注意,当覆盖该方法时,通常需要覆盖hashCode方法,以便维护hashCode方法的一般合同,该方法规定相等的对象必须具有相等的哈希码。

        Specified by:
        equals在接口 Map<String,Object>
        重写:
        equalsObject
        参数
        other - 与之比较的参考对象。
        结果
        true如果此对象与obj参数相同; false否则。
        另请参见:
        Object.hashCode()HashMap
      • hashCode

        public int hashCode​()
        描述从类别复制: Object
        返回对象的哈希码值。 支持这种方法是为了散列表的利益,如HashMap提供的。

        hashCode的总合同是:

        • 无论何时在执行Java应用程序时多次在同一个对象上调用该对象,则hashCode方法必须始终返回相同的整数,前提是修改了对象中equals比较中没有使用的信息。 该整数不需要从一个应用程序的执行到相同应用程序的另一个执行保持一致。
        • 如果根据equals(Object)方法两个对象相等,则在两个对象中的每个对象上调用hashCode方法必须产生相同的整数结果。
        • 要求如果两个对象根据Object.equals(java.lang.Object)方法不相等,那么在两个对象中的每个对象上调用hashCode方法必须产生不同的整数结果。 但是,程序员应该意识到,为不等对象生成不同的整数结果可能会提高哈希表的性能。

        尽可能合理实用,由类Object定义的hashCode方法确实为不同对象返回不同的整数。 (在某个时间点,hashCode可能或可能不被实现为对象的存储器地址的某些功能。)

        Specified by:
        hashCode在接口 Map<String,Object>
        重写:
        hashCodeObject
        结果
        该对象的哈希码值。
        另请参见:
        Object.equals(java.lang.Object)System.identityHashCode(java.lang.Object)
      • toString

        public String toString​()
        描述从类别复制: Object
        返回对象的字符串表示形式。 一般来说, toString方法返回一个字符串,“文本地表示”此对象。 结果应该是一个简明扼要的表达,容易让人阅读。 建议所有子类覆盖此方法。

        toString类方法Object返回一个由类的名称,其中所述对象是其实例,该符号字符`的字符串@ ”,并且对象的哈希码的无符号的十六进制表示。 换句话说,这个方法返回一个等于下列值的字符串:

         getClass().getName() + '@' + Integer.toHexString(hashCode())
         
        重写:
        toStringObject
        结果
        对象的字符串表示形式。
      • call

        public Object call​(Object thiz,
                           Object... args)
        描述从接口JSObject复制
        将此对象称为JavaScript函数。 这相当于JavaScript中的“func.apply(thiz,args)”)。
        Specified by:
        call在接口 JSObject
        重写:
        callAbstractJSObject
        参数
        thiz - 'this'对象传递给函数。 这可能是空的。
        args - 方法的参数
        结果
        调用结果
      • newObject

        public Object newObject​(Object... args)
        描述从接口JSObject复制
        调用这个“构造函数”JavaScript函数来创建一个新对象。 这相当于JavaScript中的“new func(arg1,arg2 ...)”。
        Specified by:
        newObject在接口 JSObject
        重写:
        newObjectAbstractJSObject
        参数
        args - 方法的参数
        结果
        构造函数调用的结果
      • callMember

        public Object callMember​(String functionName,
                                 Object... args)
        调用成员函数
        参数
        functionName - 函数名
        args - 参数
        结果
        函数的返回值
      • hasMember

        public boolean hasMember​(String name)
        描述从接口JSObject复制
        该对象是否具有命名成员?
        Specified by:
        hasMember在接口 JSObject
        重写:
        hasMemberAbstractJSObject
        参数
        name - 会员名称
        结果
        如果此对象具有给定名称的成员,则为true
      • hasSlot

        public boolean hasSlot​(int slot)
        描述从接口JSObject复制
        该对象是否具有索引属性?
        Specified by:
        hasSlot在接口 JSObject
        重写:
        hasSlotAbstractJSObject
        参数
        slot - 要检查的索引
        结果
        如果此对象有一个插槽,则为true
      • setSlot

        public void setSlot​(int index,
                            Object value)
        描述从接口JSObject复制
        在此JavaScript对象中设置索引成员
        Specified by:
        setSlot在接口 JSObject
        重写:
        setSlotAbstractJSObject
        参数
        index - 成员插槽的索引
        value - 会员的价值
      • setIndexedPropertiesToExternalArrayData

        public void setIndexedPropertiesToExternalArrayData​(ByteBuffer buf)
        Nashorn扩展名:setIndexedPropertiesToExternalArrayData。 将索引的属性设置为从给定的nio ByteBuffer中公开。
        参数
        buf - 外部缓冲区 - 应该是一个nio ByteBuffer
      • isInstance

        public boolean isInstance​(Object instance)
        说明从接口JSObject复制
        检查给定对象是否为“this”对象的实例。
        Specified by:
        isInstance在接口 JSObject
        重写:
        isInstanceAbstractJSObject
        参数
        instance - 要检查的实例
        结果
        如果给定的“实例”是此“函数”对象的实例,则为true
      • clear

        public void clear​()
        说明从接口Map复制
        从该地图中删除所有的映射(可选操作)。 此呼叫返回后,地图将为空。
        Specified by:
        clear在接口 Map<String,Object>
      • containsKey

        public boolean containsKey​(Object key)
        说明从界面Bindings复制
        如果此映射包含指定键的映射,则返回true 更正式地说,返回true当且仅当此映射包含一个键的映射关系k这样(key==null ? k==null : key.equals(k)) (最多可以有一个这样的映射。)
        Specified by:
        containsKey在接口 Bindings
        Specified by:
        containsKey在接口 Map<String,Object>
        参数
        key - 在此地图中存在的密钥要进行测试。
        结果
        true如果此映射包含指定键的映射。
      • containsValue

        public boolean containsValue​(Object value)
        说明从接口Map复制
        如果此映射将一个或多个键映射到指定的值,则返回true 更正式地,返回true当且仅当此映射包含至少一个映射到值v使得Objects.equals(value, v) 对于Map接口的大多数实现,此操作对于地图大小可能需要时间线性。
        Specified by:
        containsValue在接口 Map<String,Object>
        参数
        value - 要在此地图中存在的值要进行测试
        结果
        true如果该地图将一个或多个键映射到指定的值
      • entrySet

        public Set<Map.Entry<String,Object>> entrySet​()
        说明从接口Map复制
        返回此地图中包含的映射的Set视图。 该集合由地图支持,因此对地图的更改将反映在集合中,反之亦然。 如果映射在集合中的迭代正在进行时被修改(除了通过迭代器自己的remove操作,或者通过迭代器返回的映射条目上的setValue操作),迭代的结果是未定义的。 该组支持元件移除,即从映射中相应的映射,经由Iterator.removeSet.removeremoveAllretainAllclear操作。 它不支持addaddAll操作。
        Specified by:
        entrySet在接口 Map<String,Object>
        结果
        该地图中包含的映射的集合视图
      • get

        public Object get​(Object key)
        描述从接口Bindings复制
        返回此映射映射指定键的值。 如果地图不包含此键的映射,则返回null 返回值为null并不一定表示该映射不包含该键的映射; 地图也可能明确地将密钥映射到null 可以使用containsKey操作来区分这两种情况。

        更正式地,如果此映射包含从k键到值v的映射,使得(key==null ? k==null : key.equals(k)) ,则此方法返回v ; 否则返回null (最多可以有一个这样的映射。)

        Specified by:
        get在接口 Bindings
        Specified by:
        get在接口 Map<String,Object>
        参数
        key - 其关联值要返回的键。
        结果
        此映射映射指定键的值,如果映射不包含此键的映射, null
      • isEmpty

        public boolean isEmpty​()
        说明从接口Map复制
        如果此映射不包含键值映射,则返回 true
        Specified by:
        isEmpty在接口 Map<String,Object>
        结果
        true如果此映射不包含键值映射
      • put

        public Object put​(String key,
                          Object value)
        描述从接口Bindings复制
        设置一个命名值。
        Specified by:
        put在接口 Bindings
        Specified by:
        put在接口 Map<String,Object>
        参数
        key - 与值相关联的名称。
        value - 与名称相关联的值。
        结果
        以前与给定名称相关联的值。 如果以前没有与该名称相关联的值,则返回null。
      • putAll

        public void putAll​(Map<? extends String,? extends Object> map)
        描述从接口Bindings复制
        将给定的 Map中的所有映射添加到此 Bindings
        Specified by:
        putAll在接口 Bindings
        Specified by:
        putAll在接口 Map<String,Object>
        参数
        map - 与这个 Map合并。
      • remove

        public Object remove​(Object key)
        说明从界面Bindings复制
        如果存在该地图,则从该地图中删除该密钥的映射(可选操作)。 更正式地,如果此映射包含从关键字k到值v的映射,使得(key==null ? k==null : key.equals(k)) ,该映射被删除。 (地图最多可以包含一个这样的映射。)

        返回与之前关联的地图映射到的值,如果地图不包含该键的映射,则返回null (A null返回也可以指示以前关联的地图null与指定的键,如果实现支持null值)。一旦调用返回,地图将不包含指定键的映射。

        Specified by:
        remove在接口 Bindings
        Specified by:
        remove在接口 Map<String,Object>
        参数
        key - 要从地图中删除其映射的密钥。
        结果
        与指定键相关联的上一个值,如果没有键的映射, null
      • delete

        public boolean delete​(Object key)
        从此对象中删除属性。
        参数
        key - 要删除的属性
        结果
        如果删除成功与否
      • size

        public int size​()
        说明从界面Map复制
        返回此地图中键值映射的数量。 如果地图包含Integer.MAX_VALUE元素,则返回Integer.MAX_VALUE
        Specified by:
        size在接口 Map<String,Object>
        结果
        该地图中键值映射的数量
      • getProto

        public Object getProto​()
        返回此对象的__proto__。
        结果
        __proto__对象。
      • setProto

        public void setProto​(Object proto)
        设置此对象的__proto__。
        参数
        proto - 这个对象的新proto
      • getOwnPropertyDescriptor

        public Object getOwnPropertyDescriptor​(String key)
        ECMA 8.12.1 [[GetOwnProperty]](P)
        参数
        key - 属性键
        结果
        返回此对象的命名自己属性的属性描述符,如果不存在则返回undefined。
      • getOwnKeys

        public String[] getOwnKeys​(boolean all)
        返回与对象关联的自己的属性键的数组。
        参数
        all - 如果包含不可枚举的键, all真。
        结果
        数组键。
      • preventExtensions

        public ScriptObjectMirror preventExtensions​()
        将此脚本对象标记为不可扩展
        结果
        使物体不可扩展
      • isExtensible

        public boolean isExtensible​()
        检查此脚本对象是否可扩展
        结果
        如果可扩展,则为true
      • seal

        public ScriptObjectMirror seal​()
        ECMAScript 15.2.3.8 - 密封执行
        结果
        密码脚本对象
      • isSealed

        public boolean isSealed​()
        检查这个脚本对象是否被密封
        结果
        如果密封则为真
      • freeze

        public ScriptObjectMirror freeze​()
        ECMA 15.2.39 - 冻结执行。 冻结此脚本对象
        结果
        冻结的脚本对象
      • isFrozen

        public boolean isFrozen​()
        检查此脚本对象是否被冻结
        结果
        如果冻结,为真
      • isUndefined

        public static boolean isUndefined​(Object obj)
        检查给定对象的实用程序是否为ECMAScript未定义的值
        参数
        obj - 要检查的对象
        结果
        如果'obj'是ECMAScript未定义的值,则为true
      • to

        public <T> T to​(Class<T> type)
        将此脚本对象转换为给定类型的实用程序。
        参数类型
        T - 要转换的目的地类型
        参数
        type - 要转换的目的地类型
        结果
        转换对象
      • wrap

        public static Object wrap​(Object obj,
                                  Object homeGlobal)
        如果需要,在给定对象上做一个脚本对象镜像。
        参数
        obj - 要包装/转换的对象
        homeGlobal - 此对象所属的全局。
        结果
        包装/转换对象
      • wrapAsJSONCompatible

        public static Object wrapAsJSONCompatible​(Object obj,
                                                  Object homeGlobal)
        如果需要,在给定对象上做一个脚本对象镜像。 创建的包装器将实现Java List接口,如果obj是一个JavaScript Array对象; 这与Java JSON库的期望是兼容的。 通过其属性检索的数组(转移)也将实现列表接口。
        参数
        obj - 要包装/转换的对象
        homeGlobal - 此对象所属的全局。
        结果
        包装/转换对象
      • unwrap

        public static Object unwrap​(Object obj,
                                    Object homeGlobal)
        如果需要,可以解开脚本对象镜像。
        参数
        obj - 要解开的对象
        homeGlobal - 此对象所属的全局
        结果
        展开的对象
      • wrapArray

        public static Object[] wrapArray​(Object[] args,
                                         Object homeGlobal)
        如果需要,将对象数组包装到脚本对象镜像中。
        参数
        args - 要解开的数组
        homeGlobal - 此对象所属的全局
        结果
        包装数组
      • unwrapArray

        public static Object[] unwrapArray​(Object[] args,
                                           Object homeGlobal)
        如果需要,展开一组脚本对象镜像。
        参数
        args - 要解开的数组
        homeGlobal - 该对象所属的全局
        结果
        展开数组
      • identical

        public static boolean identical​(Object obj1,
                                        Object obj2)
        给定的对象是否反映到相同的底层对象?
        参数
        obj1 - 第一个对象
        obj2 - 第二个对象
        结果
        如果obj1和obj2是相同的脚本对象或其镜像,则为true。
      • getDefaultValue

        public Object getDefaultValue​(Class<?> hint)
        说明从接口JSObject复制
        根据ECMAScript 5.1第8.6.2节实现此对象的 [[DefaultValue]]方法。
        Specified by:
        getDefaultValue在接口 JSObject
        参数
        hint - 类型提示。 应该是nullNumber.class或者String.class
        结果
        该对象的默认值。