|
|
|
@ -227,12 +227,20 @@ func iterOwnKeys(vm *otto.Otto, obj *otto.Object, f func(string)) { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (ctx ppctx) isBigNumber(v *otto.Object) bool { |
|
|
|
|
BigNumber, err := ctx.vm.Run("BigNumber.prototype") |
|
|
|
|
if err != nil { |
|
|
|
|
panic(err) |
|
|
|
|
// Handle numbers with custom constructor.
|
|
|
|
|
if v, _ := v.Get("constructor"); v.Object() != nil { |
|
|
|
|
if strings.HasPrefix(toString(v.Object()), "function BigNumber") { |
|
|
|
|
return true |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
// Handle default constructor.
|
|
|
|
|
BigNumber, _ := ctx.vm.Object("BigNumber.prototype") |
|
|
|
|
if BigNumber == nil { |
|
|
|
|
return false |
|
|
|
|
} |
|
|
|
|
cp := constructorPrototype(v) |
|
|
|
|
return cp != nil && cp.Value() == BigNumber |
|
|
|
|
bv, _ := BigNumber.Call("isPrototypeOf", v) |
|
|
|
|
b, _ := bv.ToBoolean() |
|
|
|
|
return b |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func toString(obj *otto.Object) string { |
|
|
|
|