diff --git a/Sources/JavaScriptKit/JSObject.swift b/Sources/JavaScriptKit/JSObject.swift index 8ff7f5b5..f0211c6a 100644 --- a/Sources/JavaScriptKit/JSObject.swift +++ b/Sources/JavaScriptKit/JSObject.swift @@ -9,18 +9,13 @@ public class JSObjectRef: Equatable { } @_disfavoredOverload - public subscript(dynamicMember name: String) -> ((JSValueEncodable...) -> JSValue)? { + public subscript(_ name: String) -> ((JSValueEncodable...) -> JSValue)? { guard let function = self[name].function else { return nil } return { (arguments: JSValueEncodable...) in function(this: self, args: arguments) } } - public subscript(dynamicMember name: String) -> JSValue { - get { self[name] } - set { self[name] = newValue } - } - public subscript(_ name: String) -> JSValue { get { getJSValue(this: self, name: name) } set { setJSValue(this: self, name: name, value: newValue) } @@ -31,6 +26,19 @@ public class JSObjectRef: Equatable { set { setJSValue(this: self, index: Int32(index), value: newValue) } } + @_disfavoredOverload + public subscript(dynamicMember name: String) -> ((JSValueEncodable...) -> JSValue)? { + guard let function = self[name].function else { return nil } + return { (arguments: JSValueEncodable...) in + function(this: self, args: arguments) + } + } + + public subscript(dynamicMember name: String) -> JSValue { + get { self[name] } + set { self[name] = newValue } + } + public static func instanceof(_ instance: JSObjectRef, constructor: JSFunctionRef) -> Bool { _instanceof(instance.id, constructor.id) }