16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package jdk.nashorn.api.scripting; 27 28 import java.util.Collection; 29 import java.util.Set; 30 31 /** 32 * This interface can be implemented by an arbitrary Java class. Nashorn will 33 * treat objects of such classes just like nashorn script objects. Usual nashorn 34 * operations like obj[i], obj.foo, obj.func(), delete obj.foo will be glued 35 * to appropriate method call of this interface. 36 */ 37 public interface JSObject { 38 /** 39 * Call this object as a JavaScript function. This is equivalent to 40 * 'func.apply(thiz, args)' in JavaScript. 41 * 42 * @param thiz 'this' object to be passed to the function 43 * @param args arguments to method 44 * @return result of call 45 */ 46 public Object call(final Object thiz, final Object... args); 47 48 /** 49 * Call this 'constructor' JavaScript function to create a new object. 50 * This is equivalent to 'new func(arg1, arg2...)' in JavaScript. 51 * 52 * @param args arguments to method 53 * @return result of constructor call 54 */ 55 public Object newObject(final Object... args); 56 | 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package jdk.nashorn.api.scripting; 27 28 import java.util.Collection; 29 import java.util.Set; 30 31 /** 32 * This interface can be implemented by an arbitrary Java class. Nashorn will 33 * treat objects of such classes just like nashorn script objects. Usual nashorn 34 * operations like obj[i], obj.foo, obj.func(), delete obj.foo will be glued 35 * to appropriate method call of this interface. 36 * 37 * @since 1.8u40 38 */ 39 @jdk.Exported 40 public interface JSObject { 41 /** 42 * Call this object as a JavaScript function. This is equivalent to 43 * 'func.apply(thiz, args)' in JavaScript. 44 * 45 * @param thiz 'this' object to be passed to the function 46 * @param args arguments to method 47 * @return result of call 48 */ 49 public Object call(final Object thiz, final Object... args); 50 51 /** 52 * Call this 'constructor' JavaScript function to create a new object. 53 * This is equivalent to 'new func(arg1, arg2...)' in JavaScript. 54 * 55 * @param args arguments to method 56 * @return result of constructor call 57 */ 58 public Object newObject(final Object... args); 59 |