Add Function construtor to js-sys

This commit is contained in:
Alex Crichton 2018-07-27 13:21:04 -07:00
parent 8cd8ae6d10
commit 081f2fdc65
2 changed files with 12 additions and 4 deletions

View File

@ -722,6 +722,17 @@ extern "C" {
#[derive(Clone, Debug)]
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
/// (or an array-like object).
///

View File

@ -5,9 +5,6 @@ use js_sys::{Array, Function};
#[wasm_bindgen]
extern {
#[wasm_bindgen(js_name = Function)]
fn new_function(s: &str) -> Function;
type This;
#[wasm_bindgen(method, getter, structural, js_name = self)]
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.
//
// Whew!
let this = new_function("return this")
let this = Function::new_no_args("return this")
.apply(&JsValue::undefined(), &Array::new())
.unwrap();
assert!(this != JsValue::undefined());