Referência JavaScript vs encadernação ... qual é a diferença?
Recentemente, li o seguinte em You Don't Know JS, de Kyle Simpson: ES6
"[Módulos ES6 exportam] ligações reais (quase como ponteiros) para os identificadores na sua definição de módulo interno."
Minha confusão é como essas ligações diferem das referências ...
Eu entendo que umreferência em JS é aplicável apenas a tipos não primitivos (como objetos), portanto, dado
let object1 = {a: 1};
let object2 = object1;
object1
eobject2
Agora, consulte (ambos são referências) ao mesmo objeto.
Se eu adicionar uma propriedade aobject2
, Também estou adicionando uma propriedade aobject1
object2.b = 2;
console.log(object1.b); // 2
E eu posso ver que umobrigatório pode se aplicar a tipos primitivos e não primitivos
// foo.js
export let count = 1;
export function incrementCount() { count++; }
// bar.js
import {count, incrementCount} from foo;
console.log(count); // 1
incrementCount();
console.log(count); // 2
Uma ligação é como uma referência, exceto que os valores primitivos também podem compartilhar uma ligação (enquanto as referências são limitadas a tipos não primitivos)?
Sinto que estou perdendo alguma coisa aqui ...