mirror of
https://github.com/fluencelabs/wasm-bindgen
synced 2025-05-02 09:02:16 +00:00
Add Function
construtor to js-sys
This commit is contained in:
parent
8cd8ae6d10
commit
081f2fdc65
@ -722,6 +722,17 @@ extern "C" {
|
|||||||
#[derive(Clone, Debug)]
|
#[derive(Clone, Debug)]
|
||||||
pub type Function;
|
pub type Function;
|
||||||
|
|
||||||
|
/// The `Function` constructor creates a new `Function` object. Calling the
|
||||||
|
/// constructor directly can create functions dynamically, but suffers from
|
||||||
|
/// security and similar (but far less significant) performance issues
|
||||||
|
/// similar to `eval`. However, unlike `eval`, the `Function` constructor
|
||||||
|
/// allows executing code in the global scope, prompting better programming
|
||||||
|
/// habits and allowing for more efficient code minification.
|
||||||
|
///
|
||||||
|
/// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function
|
||||||
|
#[wasm_bindgen(constructor)]
|
||||||
|
pub fn new_no_args(body: &str) -> Function;
|
||||||
|
|
||||||
/// The apply() method calls a function with a given this value, and arguments provided as an array
|
/// The apply() method calls a function with a given this value, and arguments provided as an array
|
||||||
/// (or an array-like object).
|
/// (or an array-like object).
|
||||||
///
|
///
|
||||||
|
@ -5,9 +5,6 @@ use js_sys::{Array, Function};
|
|||||||
|
|
||||||
#[wasm_bindgen]
|
#[wasm_bindgen]
|
||||||
extern {
|
extern {
|
||||||
#[wasm_bindgen(js_name = Function)]
|
|
||||||
fn new_function(s: &str) -> Function;
|
|
||||||
|
|
||||||
type This;
|
type This;
|
||||||
#[wasm_bindgen(method, getter, structural, js_name = self)]
|
#[wasm_bindgen(method, getter, structural, js_name = self)]
|
||||||
fn self_(me: &This) -> JsValue;
|
fn self_(me: &This) -> JsValue;
|
||||||
@ -56,7 +53,7 @@ pub fn is_browser() -> bool {
|
|||||||
// * Last but not least, test whether `self` is defined or not.
|
// * Last but not least, test whether `self` is defined or not.
|
||||||
//
|
//
|
||||||
// Whew!
|
// Whew!
|
||||||
let this = new_function("return this")
|
let this = Function::new_no_args("return this")
|
||||||
.apply(&JsValue::undefined(), &Array::new())
|
.apply(&JsValue::undefined(), &Array::new())
|
||||||
.unwrap();
|
.unwrap();
|
||||||
assert!(this != JsValue::undefined());
|
assert!(this != JsValue::undefined());
|
||||||
|
Loading…
x
Reference in New Issue
Block a user