diff --git a/IntegrationTests/TestSuites/Sources/PrimaryTests/main.swift b/IntegrationTests/TestSuites/Sources/PrimaryTests/main.swift
index ff42d3358..c10dc746d 100644
--- a/IntegrationTests/TestSuites/Sources/PrimaryTests/main.swift
+++ b/IntegrationTests/TestSuites/Sources/PrimaryTests/main.swift
@@ -804,5 +804,27 @@ try test("Hashable Conformance") {
     try expectEqual(firstHash, secondHash)
 }
 
+struct AnimalStruct: Decodable {
+    let name: String
+    let age: Int
+    let isCat: Bool
+}
+
+try test("JSValueDecoder") {
+    let Animal = JSObject.global.Animal.function!
+    let tama = try Animal.throws.new("Tama", 3, true)
+    let decoder = JSValueDecoder()
+    let decodedTama = try decoder.decode(AnimalStruct.self, from: tama.jsValue)
+
+    try expectEqual(decodedTama.name, tama.name.string)
+    try expectEqual(decodedTama.name, "Tama")
+
+    try expectEqual(decodedTama.age, tama.age.number.map(Int.init))
+    try expectEqual(decodedTama.age, 3)
+
+    try expectEqual(decodedTama.isCat, tama.isCat.boolean)
+    try expectEqual(decodedTama.isCat, true)
+}
+
 
 Expectation.wait(expectations)
diff --git a/Sources/JavaScriptKit/JSValueDecoder.swift b/Sources/JavaScriptKit/JSValueDecoder.swift
index c70dd8e27..b1d59af63 100644
--- a/Sources/JavaScriptKit/JSValueDecoder.swift
+++ b/Sources/JavaScriptKit/JSValueDecoder.swift
@@ -34,7 +34,7 @@ private struct _Decoder: Decoder {
 }
 
 private enum Object {
-    static let ref = JSObject.global.Object.object!
+    static let ref = JSObject.global.Object.function!
     static func keys(_ object: JSObject) -> [String] {
         let keys = ref.keys!(object).array!
         return keys.map { $0.string! }