⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scriptableobject.java

📁 這是一個javascript 的 interpreter是了解 web browser的好材料
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
    /**     * Removes the indexed property from the object.     *     * If the property is not found, or it has the PERMANENT attribute,     * no action is taken.     *     * @param index the numeric index for the property     */    public void delete(int index)    {        checkNotSealed(null, index);        accessSlot(null, index, SLOT_REMOVE);    }    /**     * Sets the value of the named const property, creating it if need be.     *     * If the property was created using defineProperty, the     * appropriate setter method is called. <p>     *     * If the property's attributes include READONLY, no action is     * taken.     * This method will actually set the property in the start     * object.     *     * @param name the name of the property     * @param start the object whose property is being set     * @param value value to set the property to     */    public void putConst(String name, Scriptable start, Object value)    {        if (putImpl(name, 0, start, value, READONLY))            return;        if (start == this) throw Kit.codeBug();        if (start instanceof ConstProperties)            ((ConstProperties)start).putConst(name, start, value);        else            start.put(name, start, value);    }    public void defineConst(String name, Scriptable start)    {        if (putImpl(name, 0, start, Undefined.instance, UNINITIALIZED_CONST))            return;        if (start == this) throw Kit.codeBug();        if (start instanceof ConstProperties)            ((ConstProperties)start).defineConst(name, start);    }    /**     * Returns true if the named property is defined as a const on this object.     * @param name     * @return true if the named property is defined as a const, false     * otherwise.     */    public boolean isConst(String name)    {        Slot slot = getSlot(name, 0, SLOT_QUERY);        if (slot == null) {            return false;        }        return (slot.getAttributes() & (PERMANENT|READONLY)) ==                                       (PERMANENT|READONLY);    }    /**     * @deprecated Use {@link #getAttributes(String name)}. The engine always     * ignored the start argument.     */    public final int getAttributes(String name, Scriptable start)    {        return getAttributes(name);    }    /**     * @deprecated Use {@link #getAttributes(int index)}. The engine always     * ignored the start argument.     */    public final int getAttributes(int index, Scriptable start)    {        return getAttributes(index);    }    /**     * @deprecated Use {@link #setAttributes(String name, int attributes)}.     * The engine always ignored the start argument.     */    public final void setAttributes(String name, Scriptable start,                                    int attributes)    {        setAttributes(name, attributes);    }    /**     * @deprecated Use {@link #setAttributes(int index, int attributes)}.     * The engine always ignored the start argument.     */    public void setAttributes(int index, Scriptable start,                              int attributes)    {        setAttributes(index, attributes);    }    /**     * Get the attributes of a named property.     *     * The property is specified by <code>name</code>     * as defined for <code>has</code>.<p>     *     * @param name the identifier for the property     * @return the bitset of attributes     * @exception EvaluatorException if the named property is not found     * @see org.mozilla.javascript.ScriptableObject#has(String, Scriptable)     * @see org.mozilla.javascript.ScriptableObject#READONLY     * @see org.mozilla.javascript.ScriptableObject#DONTENUM     * @see org.mozilla.javascript.ScriptableObject#PERMANENT     * @see org.mozilla.javascript.ScriptableObject#EMPTY     */    public int getAttributes(String name)    {        return findAttributeSlot(name, 0, SLOT_QUERY).getAttributes();    }    /**     * Get the attributes of an indexed property.     *     * @param index the numeric index for the property     * @exception EvaluatorException if the named property is not found     *            is not found     * @return the bitset of attributes     * @see org.mozilla.javascript.ScriptableObject#has(String, Scriptable)     * @see org.mozilla.javascript.ScriptableObject#READONLY     * @see org.mozilla.javascript.ScriptableObject#DONTENUM     * @see org.mozilla.javascript.ScriptableObject#PERMANENT     * @see org.mozilla.javascript.ScriptableObject#EMPTY     */    public int getAttributes(int index)    {        return findAttributeSlot(null, index, SLOT_QUERY).getAttributes();    }    /**     * Set the attributes of a named property.     *     * The property is specified by <code>name</code>     * as defined for <code>has</code>.<p>     *     * The possible attributes are READONLY, DONTENUM,     * and PERMANENT. Combinations of attributes     * are expressed by the bitwise OR of attributes.     * EMPTY is the state of no attributes set. Any unused     * bits are reserved for future use.     *     * @param name the name of the property     * @param attributes the bitset of attributes     * @exception EvaluatorException if the named property is not found     * @see org.mozilla.javascript.Scriptable#has(String, Scriptable)     * @see org.mozilla.javascript.ScriptableObject#READONLY     * @see org.mozilla.javascript.ScriptableObject#DONTENUM     * @see org.mozilla.javascript.ScriptableObject#PERMANENT     * @see org.mozilla.javascript.ScriptableObject#EMPTY     */    public void setAttributes(String name, int attributes)    {        checkNotSealed(name, 0);        findAttributeSlot(name, 0, SLOT_MODIFY).setAttributes(attributes);    }    /**     * Set the attributes of an indexed property.     *     * @param index the numeric index for the property     * @param attributes the bitset of attributes     * @exception EvaluatorException if the named property is not found     * @see org.mozilla.javascript.Scriptable#has(String, Scriptable)     * @see org.mozilla.javascript.ScriptableObject#READONLY     * @see org.mozilla.javascript.ScriptableObject#DONTENUM     * @see org.mozilla.javascript.ScriptableObject#PERMANENT     * @see org.mozilla.javascript.ScriptableObject#EMPTY     */    public void setAttributes(int index, int attributes)    {        checkNotSealed(null, index);        findAttributeSlot(null, index, SLOT_MODIFY).setAttributes(attributes);    }    /**     * XXX: write docs.     */    public void setGetterOrSetter(String name, int index,                                  Callable getterOrSeter, boolean isSetter)    {        if (name != null && index != 0)            throw new IllegalArgumentException(name);        checkNotSealed(name, index);        GetterSlot gslot = (GetterSlot)getSlot(name, index,                                               SLOT_MODIFY_GETTER_SETTER);        gslot.checkNotReadonly();        if (isSetter) {            gslot.setter = getterOrSeter;        } else {            gslot.getter = getterOrSeter;        }        gslot.value = Undefined.instance;    }        /**     * Get the getter or setter for a given property. Used by __lookupGetter__     * and __lookupSetter__.     *      * @param name Name of the object. If nonnull, index must be 0.     * @param index Index of the object. If nonzero, name must be null.     * @param isSetter If true, return the setter, otherwise return the getter.     * @exception IllegalArgumentException if both name and index are nonnull     *            and nonzero respectively.     * @return Null if the property does not exist. Otherwise returns either      *         the getter or the setter for the property, depending on      *         the value of isSetter (may be undefined if unset).     */    public Object getGetterOrSetter(String name, int index, boolean isSetter)    {        if (name != null && index != 0)            throw new IllegalArgumentException(name);        Slot slot = getSlot(name, index, SLOT_QUERY);        if (slot == null)            return null;        if (slot instanceof GetterSlot) {            GetterSlot gslot = (GetterSlot)slot;            Object result = isSetter ? gslot.setter : gslot.getter;            return result != null ? result : Undefined.instance;        } else            return Undefined.instance;    }    /**     * Returns whether a property is a getter or a setter     * @param name property name     * @param index property index     * @param setter true to check for a setter, false for a getter     * @return whether the property is a getter or a setter     */    protected boolean isGetterOrSetter(String name, int index, boolean setter) {        Slot slot = getSlot(name, index, SLOT_QUERY);        if (slot instanceof GetterSlot) {            if (setter && ((GetterSlot)slot).setter != null) return true;            if (!setter && ((GetterSlot)slot).getter != null) return true;        }        return false;    }    void addLazilyInitializedValue(String name, int index,                                   LazilyLoadedCtor init, int attributes)    {        if (name != null && index != 0)            throw new IllegalArgumentException(name);        checkNotSealed(name, index);        GetterSlot gslot = (GetterSlot)getSlot(name, index,                                               SLOT_MODIFY_GETTER_SETTER);        gslot.setAttributes(attributes);        gslot.getter = null;        gslot.setter = null;        gslot.value = init;    }    /**     * Returns the prototype of the object.     */    public Scriptable getPrototype()    {        return prototypeObject;    }    /**     * Sets the prototype of the object.     */    public void setPrototype(Scriptable m)    {        prototypeObject = m;    }    /**     * Returns the parent (enclosing) scope of the object.     */    public Scriptable getParentScope()    {        return parentScopeObject;    }    /**     * Sets the parent (enclosing) scope of the object.     */    public void setParentScope(Scriptable m)    {        parentScopeObject = m;    }    /**     * Returns an array of ids for the properties of the object.     *     * <p>Any properties with the attribute DONTENUM are not listed. <p>     *     * @return an array of java.lang.Objects with an entry for every     * listed property. Properties accessed via an integer index will     * have a corresponding     * Integer entry in the returned array. Properties accessed by     * a String will have a String entry in the returned array.     */    public Object[] getIds() {        return getIds(false);    }    /**     * Returns an array of ids for the properties of the object.     *     * <p>All properties, even those with attribute DONTENUM, are listed. <p>     *     * @return an array of java.lang.Objects with an entry for every     * listed property. Properties accessed via an integer index will     * have a corresponding     * Integer entry in the returned array. Properties accessed by     * a String will have a String entry in the returned array.     */    public Object[] getAllIds() {        return getIds(true);    }    /**     * Implements the [[DefaultValue]] internal method.     *     * <p>Note that the toPrimitive conversion is a no-op for     * every type other than Object, for which [[DefaultValue]]     * is called. See ECMA 9.1.<p>     *     * A <code>hint</code> of null means "no hint".     *     * @param typeHint the type hint     * @return the default value for the object     *     * See ECMA 8.6.2.6.     */    public Object getDefaultValue(Class typeHint)    {        return getDefaultValue(this, typeHint);    }        public static Object getDefaultValue(Scriptable object, Class typeHint)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -