Принимая примеры, объясните методы вызова, применить и привязать в JavaScript для вашей ссылки. Конкретный контент заключается в следующем
<! Doctype html> <html> <head> <meta charset = "utf-8"> <title> </title> <script type = "text/javascript"> function man (имя, пол, возраст) {this.name = name; this.sex = sex; this.age = возраст; this.say = function (School, Zhuanye) {console.log (this.name + "," + this.sex + ", в этом году" + this.age + "Год! Учиться в" + school + " + zhuanye);}} Функция женщина (имя, возраст) {this.name = name; sex = sex; SAN "," Мужчина ", 26); var woman = new woman (" xiaohong "," kember ", 18); мужчина. Клуб "," поп -музыка "); </script> </head> <body> </body> </html>Почему? Как звонить, применить, привязать? Зачем узнать это?
Обычно он используется для указания этой среды, и эти проблемы обычно возникают перед обучением.
var a = {user: "Dream waring", fn: function () {console.log (this.user); }} var b = a.fn; b (); //неопределенныйЧто не так с пользователем в объекте А, но не определен? Это нормально, если мы напрямую выполняем a.fn ().
var a = {user: "Погоня за мечты", fn: function () {console.log (this.user); }} a.fn (); // Погоняет мечтыПричина, по которой это можно напечатать здесь, заключается в том, что это здесь указывает на функционирование A, так почему же выше не указывает на A? Если нам нужно понять эту проблему, пожалуйста, посмотрите тщательное понимание этого указания в JS, и нет необходимости запоминать эту статью.
Хотя этот метод может достичь нашей цели, иногда мы должны сохранить этот объект с другой переменной, чтобы мы могли использовать следующий метод.
1. Call ()
var a = {user: "поймать мечты", fn: function () {console.log (this.user); // ломать мечты}} var b = a.fn; b.call (a);Добавив первый параметр, к какой среде добавить B, просто поместите эту точку в этот объект.
В дополнение к первому параметру, метод вызова также может добавить несколько параметров следующим образом:
var a = {user: "Catching Dreams", fn: function (e, ee) {console.log (this.user); // Поймать консоль снов.log (e+ee); // 3}} var b = a.fn; b.call (a, 1,2);2. Применить ()
Метод применения несколько похож на метод вызова, он также может изменить указание на это
var a = {user: "поймать мечты", fn: function () {console.log (this.user); // ломать мечты}} var b = a.fn; b.apply (a);Точно так же применение также может иметь несколько параметров, но разница в том, что второй параметр должен быть массивом следующим образом:
var a = {user: "Catching Dreams", fn: function (e, ee) {console.log (this.user); // Поймать консоль снов.log (e+ee); // 11}} var b = a.fn; b.apply (a, [10,1]);или
var a = {user: "Catching Dreams", fn: function (e, ee) {console.log (this.user); // Поймать консоль снов.log (e+ee); // 520}} var b = a.fn; var arr = [500,20]; B.Apply (a, arr); // Обратите внимание, что если первый параметр вызова и применения записывается как нулевая, то это указывает на окно -объект var a = {user: "Dream waring", fn: function () {console.log (this); // window {External: Object, Chrome: Object, Document: Document, A: Object, SpeechSyntheesis: Speechyntheesis…}}} var b = a.fn; b.apply (null);3. bind ()
Метод привязки несколько отличается от методов вызова и применения, но их можно использовать для изменения направления этого.
Давайте сначала поговорим об их различиях.
var a = {user: "Dream waring", fn: function () {console.log (this.user); }} var b = a.fn; b.bind (a);Мы обнаружили, что код не был напечатан. Да, это разница между методами связывания и вызова и применения. Фактически, метод связывания возвращает модифицированную функцию.
var a = {user: "Dream waring", fn: function () {console.log (this.user); }} var b = a.fn; var c = b.bind (a); console.log (c); // function () {[Native Code]}Итак, давайте выполним функцию C, чтобы увидеть, сможем ли мы распечатать пользователя в объекте A
var a = {user: "поймать мечты", fn: function () {console.log (this.user); // Поймать мечты}} var b = a.fn; var c = b.bind (a); c ();ОК, Bind также может иметь несколько параметров, и параметры могут быть добавлены снова при выполнении, но следует отметить, что параметры выполняются в порядке формальных параметров.
var a = {user: "ловить мечты", fn: function (e, d, f) {console.log (this.user); // Поймать консоль снов.log (e, d, f); // 10 1 2}} var b = a.fn; var c = b.bind (a, 10); c (1,2);Резюме: вызовите и примените оба изменить это в контексте и немедленно выполнить эту функцию. Метод привязки позволяет вызвать соответствующую функцию всякий раз, когда она хочет, и добавлять параметры при выполнении. Это их разница, и решите использовать ее в соответствии с вашей реальной ситуацией.
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.