Bu tür bir kod, tipik olarak, belirtime en son eklenenleri kullanan modern JavaScript'i daha yaygın olarak desteklenen bir JavaScript sürümüne dönüştürmek için transpiller (Babel gibi) tarafından üretilir.
İşte bu transpilasyon paterninin oluştuğu bir örnek:
Diyelim ki transpilasyondan önce bu orijinal koda sahibiz:
import {myfunc} from "mymodule";
myfunc();
Bu ES5 uyumlu kodu yapmak için şunları yapabilirsiniz:
"use strict";
var mymodule = require("mymodule");
mymodule.myfunc();
Ama burada yürütülür myfuncile mymoduleolduğu gibi thisorijinal kodda olmuyor değeri. O kudreti daima bir sorun olmayacaktır rağmen, emin fonksiyon davranır yapmak daha iyidir sadece orijinal versiyonu yazar gibi o işlevi kullanmak istiyorsunuz bile, thisne kadar sıradışı ve hatta yararsız kullanımı o - referansı thisiçinde myfunc(olabilir çünkü orijinal versiyonda da olurdu undefined).
Örneğin, orijinal kod this.memberFun()işlevdeki bir başvuru nedeniyle bir hata atarsa, aktarılan sürümde de atar.
Yani virgül operatörü bu farktan kurtulmak için kullanılır:
(0, mymodule.myfunc)();
Kullanmak olmaz gibi Verilen, kodda kendini yazma göre, bu model için iyi bir kullanım durum var asla thisyılında myfuncilk etapta.
bindyöntem bağları. Burada sadece bir bağlam değişikliği var. Bağlamayı kesemez veya kaybedemezsiniz (yarattığı bağbind).