Javascript 中的绑定是什么意思?

问题描述 投票:0回答:4

我正在阅读这本名为《Eloquent JavaScript》的好书,但我对这个示例中“绑定”一词的使用感到困惑:

可以在对象表达式中包含符号属性,并且 通过在属性名称周围使用方括号来划分类。这导致 要评估的属性名称,很像方括号 属性访问符号,它允许我们引用一个绑定 持有符号。

let stringObject = { [toStringSymbol]() { return "a jute rope"; } }; console.log(stringObject[toStringSymbol]()); // → a jute rope

据我了解(到目前为止,在我的 JS 旅程中),“绑定”涉及指定函数在哪个

this

 或对象上下文中运行。 
看这里。。绑定可能与上下文有关。这就是为什么我们有.bind()

但在这个例子中,我们绑定了其他东西(一个键是符号的方法)。

binding

 只是意味着将属性(基元或方法)附加到对象吗?

javascript binding
4个回答
11
投票

绑定只是意味着将属性(原语或方法)附加到对象吗?

没有

您的上一段提供了更好的解释:

“绑定”涉及指定哪个 this 或对象上下文

有点

JavaScript 跟踪的所有内容都是绑定的。事实上,

undefined

的定义意味着JavaScript无法找到绑定标识符。 

回答

在 JavaScript 中绑定某些内容意味着将该标识符记录在特定的

Environment Record

 中。每个 
Environment Record
 都与特定的 
Execution Context
 相关 - 并将标识符(变量或函数名称)绑定到该执行上下文的 
this
 关键字。

参考

https://www.ecma-international.org/ecma-262/5.1/#sec-10.5

不太正式

将环境记录视为一桶东西。这些不是对象、函数、变量或我们在 JavaScript 中

编码的任何东西,这些存储桶包含所有这些东西。 JavaScript 应用程序中有很多存储桶。每个存储桶独立于其他存储桶运行。这种独立性在 JavaScript 中表示为上下文(或执行上下文)。但有时我们想将一个桶中的东西放入另一个桶中。这就是绑定的用武之地。我们可以将一个存储桶中的内容绑定到另一个存储桶的上下文中以便在那里执行。 (执行所有这些操作的副作用是 this

 关键字反映了存储桶借用了这些东西)。


7
投票
A

绑定 是很多人所说的变量 的正式术语。在 ES2015+ 中,可以使用 let

 关键字定义变量,但也可以使用 
const
 关键字定义常量。 
绑定可以引用变量或常量。

参考:请参阅 Eloquent JavaScript 第 2 章第 1 页,标题“绑定”部分下 (

https://eloquentjavascript.net/02_program_struct.html)


0
投票
在函数上下文中,“绑定可以指为函数设置上下文(this 的值)。”

function hi() { console.log("${this.name}"); } const val = { name: 'Ishant' }; const bindingValue = hi.bind(val); bindingValue(); // this will give me : "Hi! Ishant"
    

-2
投票
在本书中,它们可以互换使用绑定或变量。简单来说,绑定就是一个变量。我猜你是通过跳页开始阅读一本书的,不要再这样做了。我会写一个非常简单的程序来说明。

let count = 1;//count is a binding(a variable) ++count;//it's called side effect(because the original value of count binding was modified)

© www.soinside.com 2019 - 2024. All rights reserved.