Привет, разработчики!
Надеюсь, у вас все хорошо. Сегодня давайте поговорим о заимствовании функций в JS. Вы когда-нибудь оказывались в ситуации, когда вы работаете с объектами одинаковой структуры и пишете в каждом объекте одну и ту же функцию? Что ж, это что-то плохое, и этого не следует делать, не так ли? В этом случае вам необходимо увидеть понятие «заимствование функций». Давайте углубимся в него.
Заимствование функций
Это означает использование метода одного объекта и применение его к другому объекту.
Предположим, у вас есть два объекта: «objectA» и «objectB», и оба объекта имеют метод с одинаковым именем, скажем, «printName». . В этом случае мы можем 'заимствовать' метод «printName» у одного объекта и использовать его с другим объектом.
Разберемся на примере:→
let Person1= { name:"Daniel", printName:function() { //this refers to Person object. console.log(this.name); } } let Person2= { name:"Michael" } //As we have passed Person2 so this refer to Person2 object Person1.printName.call(Person2); //Prints Michael
Поскольку мы используем функцию Person1, лучше ее выделить. Мы можем написать это так →
let Person1= { name:"Daniel", } let printName=function() { console.log(this.name); } printName.call(Person1); //Prints "Daniel" let Person2= { name:"Michael" } printName.call(Person2); //Prints "Michael"
Для этого мы можем использовать методы «bind()», «apply()», давайте посмотрим на примере.
let Person1= { name:"Daniel", } let printName=function(lastname) { console.log(this.name+" "+lastname); } let Person2= { name:"Michael" } //Using call method printName.call(Person2,"Maxi->Call Method()"); //Prints "Michael Maxi->call method()" //Using apply method. /* Only difference is that in apply method while passing the extra argument we have to pass it in the array. But in call() we can pass it in a traditional way. */ printName.apply(Person2,["Maxi->apply method()"]); //Prints "Michael Maxi->apply method()" //bind method /* Here passing the argument is same as call method. But bind() method returns a function, assign it to var, and then call it. */ let print=printName.bind(Person2,"Maxi->bind method()"); print(); //Prints "Michael Maxi->bind method()"
Итак, это «заимствование функций», и вот так мы можем его реализовать.
Надеюсь, вам понравилась эта история/тема. Если у вас есть какие-либо вопросы, дайте мне знать в разделе комментариев/ответов.
Следуйте за мной в LinkedIn.
На простом английском языке
Спасибо, что вы являетесь частью нашего сообщества! Прежде чем уйти:
- Обязательно аплодируйте и следуйте за автором! 👏
- Еще больше контента вы можете найти на PlainEnglish.io 🚀
- Подпишитесь на нашу бесплатную еженедельную рассылку. 🗞️
- Следуйте за нами в Twitter(X), LinkedIn, YouTube и Discord.