Binding
- Node.js kursu
- Uzman
- Ders 9/47
- 5 dk
JS ve C++ arası binding öğrenirsin.
Binding
Binding, bir JS fonksiyonunu native koda bağlama işlemidir. Native taraf fonksiyonu çağırır, JS tarafı sonucu döndürür. Bir bindFunction(name, fn) fonksiyonu bunu modeller: fonksiyonun adını ve parametre sayısını (arity) kaydeder.
fn.length bir JS fonksiyonunun tanımlı parametre sayısını verir. Örnek: function(a, b) { return a + b; } için .length 2 olur. bindFunction('add', add) {name: 'add', arity: 2} döndürür. Binding sırasında native taraf bu bilgileri kullanır: ad ile çağırır, arity ile parametre sayısını denetler. Bu, native ve JS arasındaki köprünün temelidir. Çıktı add: 2 olur; ad ve parametre sayısı tek satırda.
Arity nedir?
Arity, bir fonksiyonun beklediği parametre sayısıdır. JavaScript'te fn.length ile alınır. Örnek: function(a, b) {...} için .length 2'dir. Varsayılan parametreli fonksiyonlarda .length yalnızca varsayılan olmayan parametreleri sayar.
Binding sırasında arity önemli: native taraf yanlış parametre sayısıyla çağrı yapmaz. bindFunction('add', add), add'in arity'sini 2 olarak kaydeder; native taraf bunu okur. console.log(bindFunction('add', add).name + ': ' + bindFunction('add', add).arity) add: 2 yazdırır. Bu, binding'in en temel denetimidir: ad ve parametre sayısı. Gerçek N-API'de napi_get_cb_info ile gerçek parametreler alınır ama arity kaydı yine de kullanışlıdır.
Uygulama Binding fonksiyonu yaz
function bindFunction(name, fn) yaz. {name: name, arity: fn.length} döndür. const add = function(a, b) { return a + b; } tanımla. console.log(bindFunction('add', add).name + ': ' + bindFunction('add', add).arity) yazdır.
Başlangıç kodu
// bindFunction fonksiyonu yaz
// bir JS fonksiyonunu adıyla bağla
// {name, arity} döndürsün (arity parametre sayısı)
// 'add: 2' biçiminde yazdır
// buraya yazÖrnek çözüm
function bindFunction(name, fn) {
return {name: name, arity: fn.length};
}
const add = function(a, b) { return a + b; };
console.log(bindFunction('add', add).name + ': ' + bindFunction('add', add).arity);Beklenen çıktı
add: 2
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Kavramı açıklamasına eşle
| Kavram | Anlamı |
|---|---|
Binding |
JS ve native arasında köprü |
fn.length |
Parametre sayısı |
arity |
Parametre sayısı adı |
name |
Fonksiyon adı |
2 function(a, b) { return a + b; }.length ne dir?
function(a, b) { return a + b; }.length- 2 Doğru cevap
- 3
- 0
- 1
Açıklama: İki parametre (a, b) tanımlı, .length 2 olur.
3 arity değerini tamamla
return {name: name, arity: fn.____};
return {name: name, arity: fn.length};
Açıklama: fn.length parametre sayısını verir.