CodeBlanks Logo Icon CodeBlanks

Binding

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

index.js
// 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

index.js
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?

index.js
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

Soru
return {name: name, arity: fn.____};
Cevap
return {name: name, arity: fn.length};

Açıklama: fn.length parametre sayısını verir.

Uzman bölümündeki tüm dersler