--- title: 'web-sys' description: 'web-sys crate 为 Web API 提供绑定。' --- import Tabs from '@theme/Tabs' import TabItem from '@theme/TabItem' [`web-sys` crate](https://crates.io/crates/web-sys) 为 Web API 提供绑定。这是从浏览器 WebIDL 生成的,这就是为什么有些名称如此之长,有些类型如此模糊的原因。 ## `web-sys` 中的特性 (features) `web-sys` crate 中启用了所有特性可能会给 Wasm 应用程序增加很多冗余。为了解决这个问题,大多数类型都是通过启用 features 进行控制的,这样你只需要包含你的应用程序所需的类型。Yew 启用了 `web-sys` 的几个特性,并在其公共 API 中公开了一些类型。你通常需要自行将 `web-sys` 添加为依赖项。 ## `web-sys` 中的继承 在[模拟继承](./wasm-bindgen.mdx#simulating-inheritance)部分,你可以了解到 Rust 通常提供了一种模拟 JavaScript 中继承的方法。这在 `web-sys` 中非常重要,因为了解一个类型上有哪些方法意味着了解它的继承。 这一部分将查看一个特定的元素,并使用 Rust 调用 [`Deref::deref`](https://doc.rust-lang.org/std/ops/trait.Deref.html#tymethod.deref) 列出其继承,直到该值为 [`JsValue`](./wasm-bindgen.mdx#jsvalue)。 ```rust use std::ops::Deref; use web_sys::{ Element, EventTarget, HtmlElement, HtmlTextAreaElement, Node, }; fn inheritance_of_text_area(text_area: HtmlTextAreaElement) { // HtmlTextAreaElement 是 HTML 中的