//Javascript Fonksiyonlarında Call Apply Bind const bruce = {name:"Bruce"}; const madeline={name:"Madeline"}; function greet(){ return `Hello I'm ${this.name}!`; } //this için kullanılacak nesneleri çağırmak için bruce ve madeline için call özelliğini kullanıyoruz. console.log(greet.call(bruce)); console.log(greet.call(madeline)); function update(birthYear,occupation){ this.birthYear=birthYear; this.occupation=occupation; } update.call(bruce,1991,'Software Developer'); update.call(madeline,1990,'Dentist'); console.log(`${bruce.name} ${bruce.birthYear} ${bruce.occupation} `); console.log(`${madeline.name} ${madeline.birthYear} ${madeline.occupation} `); //apply ile call farkı apply de dizi olarak yazarız call da parametre olarak yazarız update.apply(bruce,[1980,'Specialist']); update.apply(madeline,[1989,'Doctor']); console.log(`${bruce.name} ${bruce.birthYear} ${bruce.occupation} `); console.log(`${madeline.name} ${madeline.birthYear} ${madeline.occupation} `); const newBruce=[1992,'Police']; //apply yerine ...(üç nokta) da kullanabiliriz. update.call(bruce,...newBruce); console.log(`${bruce.name} ${bruce.birthYear} ${bruce.occupation} `); const numbers=[5,3,2,4]; console.log(Math.min(...numbers)); console.log(Math.max(...numbers)); //Bind sadece bir nesne (bruce) üzerinde işlem yapmaya izin veriyor. const updateBruce=update.bind(bruce); updateBruce(1904,"actor"); console.log(`${bruce.name} ${bruce.birthYear} ${bruce.occupation} `); console.log(`${madeline.name} ${madeline.birthYear} ${madeline.occupation} `); //Madeline üzerinde değişiklik yapmama izin vermedi madeline değişmedi. updateBruce.call(madeline,1274,'King'); console.log(`${bruce.name} ${bruce.birthYear} ${bruce.occupation} `); console.log(`${madeline.name} ${madeline.birthYear} ${madeline.occupation} `);