description

# dart:js_util library

Utility methods to manipulate `package:js` annotated JavaScript interop objects in cases where the name to call is not known at runtime.

Note

You should usually use `dart:js_interop` instead of this library. To learn more, check out the JS interop documentation.

You should only use these methods when the same effect cannot be achieved with `@JS()` annotations.

## Properties

globalThis → Object
  no setter
objectPrototype → Object?
  Returns the `Object` prototype. Equivalent to `Object.prototype`.
  no setter

## Functions

add<T>(Object? first, Object? second) → T
  Perform JavaScript addition (`+`) on two values.
allowInterop<F extends Function>(F f) → F
  Returns a wrapper around function `f` that can be called from JavaScript using `package:js` JavaScript interop.
allowInteropCaptureThis(Function f) → Function
  Returns a wrapper around function `f` that can be called from JavaScript using `package:js` JavaScript interop, passing JavaScript `this` as the first argument.
and<T>(Object? first, Object? second) → T
  Perform JavaScript logical and comparison (`&&`) of two expressions.
callConstructor<T>(Object constr, List<Object?>? arguments) → T
callMethod<T>(Object o, Object method, List<Object?> args) → T
createDartExport<T extends Object>(T dartObject) → Object
  Given a Dart object that is marked exportable, creates a JS object literal that forwards to that Dart class. Look at the `@JSExport` annotation to determine what constitutes "exportable" for a Dart class. The object literal will be a map of export names (which are either the written instance member names or their rename) to their respective Dart instance members.
createStaticInteropMock<T extends Object, U extends Object>(U dartMock, [Object? proto = null]) → T
  Given a `@staticInterop` type T and an instance `dartMock` of a Dart class U that implements the external extension members of T, creates a forwarding mock.
dartify(Object? o) → Object?
  Effectively the inverse of jsify, dartify Takes a JavaScript object, and converts it to a Dart based object. Only JS primitives, arrays, or 'map' like JS objects are supported.
delete<T>(Object o, Object property) → bool
  Perform JavaScript delete operator (`delete`) on the given property of the given object.
divide<T>(Object? first, Object? second) → T
  Perform JavaScript division (`/`) on two values.
equal<T>(Object? first, Object? second) → bool
  Perform JavaScript equality comparison (`==`) on two values.
exponentiate<T>(Object? first, Object? second) → T
  Perform JavaScript exponentiation (`**`) on two values.
getProperty<T>(Object o, Object name) → T
greaterThan<T>(Object? first, Object? second) → bool
  Perform JavaScript greater than comparison (`>`) of two values.
greaterThanOrEqual<T>(Object? first, Object? second) → bool
  Perform JavaScript greater than or equal comparison (`>=`) of two values.
hasProperty(Object o, Object name) → bool
instanceof(Object? o, Object type) → bool
  Check whether `o` is an instance of `type`.
instanceOfString(Object? element, String objectType) → bool
  Like instanceof only takes a String for the object name instead of a constructor object.
isJavaScriptArray(dynamic value) → bool
  Returns `true` if a given object is a JavaScript array.
isJavaScriptSimpleObject(dynamic value) → bool
  Returns `true` if a given object is a simple JavaScript object.
isTruthy<T>(Object? o) → bool
  Determines if the given object is truthy or falsy.
jsify(Object? object) → dynamic
  Recursively converts a JSON-like collection to JavaScript compatible representation.
lessThan<T>(Object? first, Object? second) → bool
  Perform JavaScript less than comparison (`<`) of two values.
lessThanOrEqual<T>(Object? first, Object? second) → bool
  Perform JavaScript less than or equal comparison (`<=`) of two values.
modulo<T>(Object? first, Object? second) → T
  Perform JavaScript remainder (`%`) on two values.
multiply<T>(Object? first, Object? second) → T
  Perform JavaScript multiplication (`*`) on two values.
newObject<T>() → T
not<T>(Object? o) → T
  Perform JavaScript logical not (`!`) on the given object.
notEqual<T>(Object? first, Object? second) → bool
  Perform JavaScript inequality comparison (`!=`) on two values.
objectGetPrototypeOf(Object? object) → Object?
  Returns the prototype of a given object. Equivalent to `Object.getPrototypeOf`.
objectKeys(Object? object) → List<Object?>
  Returns the keys for a given object. Equivalent to `Object.keys(object)`.
or<T>(Object? first, Object? second) → T
  Perform JavaScript logical or comparison (`||`) of two expressions.
promiseToFuture<T>(Object jsPromise) → Future<T>
  Converts a JavaScript Promise to a Dart Future.
setProperty<T>(Object o, Object name, T? value) → T
strictEqual<T>(Object? first, Object? second) → bool
  Perform JavaScript strict equality comparison (`===`) on two values.
strictNotEqual<T>(Object? first, Object? second) → bool
  Perform JavaScript strict inequality comparison (`!==`) on two values.
subtract<T>(Object? first, Object? second) → T
  Perform JavaScript subtraction (`-`) on two values.
typeofEquals<T>(Object? o, String type) → bool
  Perform JavaScript `typeof` operator on the given object and determine if the result is equal to the given type. Exposes the whole `typeof` equal expression to maximize browser optimization.
unsignedRightShift(Object? leftOperand, Object? rightOperand) → num
  Perform JavaScript unsigned right shift operator (`>>>`) on the given left operand by the amount specified by the given right operand.

## Exceptions / Errors

NullRejectionException
  Exception for when a JSPromise that is converted via JSPromiseToFuture.toDart is rejected with a `null` or `undefined` value.