pub struct JSClass { /* private fields */ }Expand description
A JavaScript class.
The best way to create a class is by using JSClass::builder.
Implementations§
Source§impl JSClass
impl JSClass
Sourcepub fn builder<N>(
ctx: &JSContext,
name: N,
) -> Result<JSClassBuilder<'_>, JSException>
pub fn builder<N>( ctx: &JSContext, name: N, ) -> Result<JSClassBuilder<'_>, JSException>
Create a new builder to build a Self.
/// Declare a class constructor.
#[constructor_callback]
fn foo(
ctx: &JSContext,
constructor: &JSObject,
_arguments: &[JSValue],
) -> Result<JSValue, JSException> {
/// Declare a function.
#[function_callback]
fn bar(
ctx: &JSContext,
_function: Option<&JSObject>,
_this_object: Option<&JSObject>,
_arguments: &[JSValue],
) -> Result<JSValue, JSException> {
Ok(JSValue::new_number(&ctx, 42.))
}
constructor.set_property("bar", JSValue::new_function(ctx, "bar", Some(bar)))?;
Ok(constructor.into())
}
let ctx = JSContext::default();
let class = JSClass::builder(&ctx, "Foo")
.unwrap()
.constructor(Some(foo))
.build()
.unwrap();
// We have a class! Now, let's populate it inside the global object, just for fun.
let object = class.new_object();
let global_object = ctx.global_object().unwrap();
global_object.set_property("Foo", object.into()).unwrap();
let result = evaluate_script(&ctx, "const foo = new Foo(); foo.bar()", None, "test.js", 1).unwrap();
assert_eq!(result.as_number().unwrap(), 42.);Sourcepub fn new_object(&self) -> JSObject
pub fn new_object(&self) -> JSObject
Transform the Self into a JSObject.
Note that it doesn’t instantiate the class. To do a proper instantiation, one has to
call JSObject::call_as_constructor.
let ctx = JSContext::default();
let class = JSClass::builder(&ctx, "Foo").unwrap().build().unwrap();
let object = class.new_object();
assert!(object.is_object_of_class(&class));Trait Implementations§
Auto Trait Implementations§
impl Freeze for JSClass
impl RefUnwindSafe for JSClass
impl !Send for JSClass
impl !Sync for JSClass
impl Unpin for JSClass
impl UnwindSafe for JSClass
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more