Tomando exemplos, explique a chamada, aplique e vincule métodos em JavaScript para sua referência. O conteúdo específico é o seguinte
<! Doctype html> <html> <head> <meta charset = "utf-8"> <title> </title> <script type = "text/javascript"> function man (nome, sexo, idade) {this.name = name; this.sex = sexo; this.age = idade; this.Say = function (escola, zhuanye) {console.log (this.name + "," + this.sex + ", este ano" + this.age + "ano! Aprenda em" + escolar + " + zhuanye);}} função mulher (nome, sexo, idade) {this.name = name; San "," masculino ", 26); var mulher = nova mulher (" xiaohong "," feminino ", 18); homem. Man.Say.Bind (mulher) ("Deyun Club", "Música pop");Por que? O que chama, aplicar, vincular? Por que aprender isso?
Geralmente é usado para especificar esse ambiente, e esses problemas geralmente ocorrem antes do aprendizado.
var a = {user: "Dream perseguindo", fn: function () {console.log (this.User); }} var b = a.fn; b (); //indefinidoO que há de errado com o usuário no objeto A, mas indefinido? Tudo bem se executarmos diretamente A.FN ().
var a = {user: "perseguindo sonhos", fn: function () {console.log (this.User); }} a.fn (); // Perseguindo sonhosA razão pela qual isso pode ser impressa aqui é porque isso aqui aponta para a função A, então por que o acima não aponta para um? Se precisarmos entender esse problema apontador, consulte a compreensão completa disso apontando no JS e não há necessidade de memorizar este artigo.
Embora esse método possa atingir nosso objetivo, às vezes precisamos salvar esse objeto em outra variável, para que possamos usar o seguinte método.
1. Ligue para ()
var a = {user: "Catching Dreams", fn: function () {console.log (this.User); // Sonhos de captura}} var b = a.fn; b.call (a);Ao adicionar o primeiro parâmetro a qual ambiente adicionar B, basta colocar esse ponto a esse objeto.
Além do primeiro parâmetro, o método de chamada também pode adicionar vários parâmetros, como segue:
var a = {user: "Catching Dreams", fn: function (e, ee) {console.log (this.User); // pegando sonhos console.log (e+ee); // 3}} var b = a.fn; b.call (a, 1,2);2. Aplicar ()
O método de aplicação é um pouco semelhante ao método de chamada, também pode alterar o apontamento deste
var a = {user: "Catching Dreams", fn: function () {console.log (this.User); // Sonhos de captura}} var B = A.FN; B.Apply (A);Da mesma forma, o aplicativo também pode ter vários parâmetros, mas a diferença é que o segundo parâmetro deve ser uma matriz, como segue:
var a = {user: "Catching Dreams", fn: function (e, ee) {console.log (this.User); // pegando sonhos console.log (e+ee); // 11}} var b = a.fn; B.Apply (a, [10,1]);ou
var a = {user: "Catching Dreams", fn: function (e, ee) {console.log (this.User); // pegando sonhos console.log (e+ee); // 520}} var b = a.fn; var arr = [500,20]; B.Apply (a, arr); // Observe que se o primeiro parâmetro de chamada e aplicação for escrito como nulo, então isso aponta para um objeto de janela var a = {user: "Dream perseguindo", fn: function () {console.log (this); // janela {externa: objeto, cromo: objeto, documento: documento, a: objeto, discursonthesis: spealSynthesis…}}} var b = a.fn; b.apply (nulo);3. Bind ()
O método de ligação é um pouco diferente dos métodos de chamada e aplicação, mas eles podem ser usados para alterar a direção disso.
Vamos falar sobre suas diferenças primeiro.
var a = {user: "Dream perseguindo", fn: function () {console.log (this.User); }} var b = a.fn; b.bind (a);Descobrimos que o código não estava impresso. Sim, essa é a diferença entre os métodos de ligação e chamada e aplicação. De fato, o método de ligação retorna uma função modificada.
var a = {user: "Dream perseguindo", fn: function () {console.log (this.User); }} var b = a.fn; var c = b.bind (a); console.log (c); // function () {[código nativo]}Então, vamos executar a função c para ver se podemos imprimir o usuário no objeto a
var a = {user: "Catching Dreams", fn: function () {console.log (this.User); // Sonhos de captura}} var b = a.fn; var c = b.bind (a); c ();Ok, o BIND também pode ter vários parâmetros e os parâmetros podem ser adicionados novamente ao executar, mas deve -se notar que os parâmetros são realizados na ordem dos parâmetros formais.
var a = {user: "Catching Dreams", fn: function (e, d, f) {console.log (this.User); // pegando sonhos console.log (e, d, f); // 10 1 2}} var b = a.fn; var c = b.bind (a, 10); c (1,2);Resumo: ligue e aplique, altere isso no contexto e execute esta função imediatamente. O método de ligação permite que a função correspondente seja chamada sempre que quiser e adicione parâmetros quando for executado. Essa é a diferença deles e opte por usá -lo de acordo com sua situação real.
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.