package org.dynjs.runtime; public interface JSObject { JSObject getPrototype(); String getClassName(); void setClassName(String className); boolean isExtensible(); Object get(ExecutionContext context, String name); Object getOwnProperty(ExecutionContext context, String name); Object getOwnProperty(ExecutionContext context, String name, boolean dupe); Object getProperty(ExecutionContext context, String name); Object getProperty(ExecutionContext context, String name, boolean dupe); boolean hasProperty(ExecutionContext context, String name); void put(ExecutionContext context, String name, Object value, boolean shouldThrow); boolean canPut(ExecutionContext context, String name); boolean delete(ExecutionContext context, String name, boolean shouldThrow); Object defaultValue(ExecutionContext context, String hint); boolean defineOwnProperty(ExecutionContext context, String name, PropertyDescriptor desc, boolean shouldThrow); NameEnumerator getOwnPropertyNames(); NameEnumerator getAllEnumerablePropertyNames(); NameEnumerator getOwnEnumerablePropertyNames(); void setPrototype(JSObject prototype); void setExtensible(boolean extensible); void defineReadOnlyProperty(final GlobalContext globalContext, String name, final Object value); void defineNonEnumerableProperty(final GlobalContext globalContext, String name, final Object value); void setExternalIndexedData(ExternalIndexedData data); ExternalIndexedData getExternalIndexedData(); boolean hasExternalIndexedData(); }