Heim  >  Artikel  >  Web-Frontend  >  Vier Aufrufmodi von Javascript-Funktionen

Vier Aufrufmodi von Javascript-Funktionen

黄舟
黄舟Original
2016-12-13 16:41:301126Durchsuche

Vier Aufrufmodi von Javascript-Funktionen

1 Funktionsmodus

Der häufigste Funktionsaufruf

// 声明式函数 
function fn1 () {    
console.log(this); 
} 
// 函数表达式函数 
var fn2 = function() {    
console.log(this); 
}; 
// 调用 函数中this表示全局对象,在浏览器中就是指window 
fn1();   //window 
fn2();   //window

2 Methodenmodus

Die Funktion wird an ein Objekt angehängt und ist ein Attribut des Objekts. Wir rufen diese Funktion dann auf. Dieses Muster ist das Methodenaufrufmuster.

var obj = {
  name: "zhangSan",
  sayHi: function () {
    console.log(this);
  }
};
obj.sayHi(); //obj对象

3 Konstruktoraufrufmodus

ist der Aufruf des Konstruktors, normalerweise über new + Funktionsname (). Dieser Modus ist für den oben genannten Methodenmodus nicht unbedingt erforderlich Unterschied

function Person() {}
var tom = new Person(); // 这就是构造器函数的调用 
  
// 构造函数调用的详细过程
// 1 会在内部创建一个对象o
// 2 给对象赋值(this), 然后执行各种操作
// 3 返回这个对象o

// 构造函数的返回值:
 //
 //  有一个默认的返回值,新创建的对象(实例);
 //  当手动添加返回值后(return语句):
 //     1. 返回值是基本数据类型-->真正的返回值还是那个新创建的对象(即实例)
 //    2. 返回值是复杂数据类型(对象)-->真正的返回值是这个对象

4 Kontextmodus

Essenz – Das Objekt leiht Methoden (Funktionen), die nicht zum Objekt gehören, das heißt, wir passen den Punkt an davon

Zu diesem Zeitpunkt sind die Call- und Apply-Methoden erforderlich

//Function.prototype.call ()
  //Function.prototype.apply ()
  //——>任何函数都可以调用call和apply方法
  
  // 第一个参数控制this的指向,第二个参数:
        在使用 上下文调用的 时候, 原函数(方法)可能会带有参数, 那么这个参数在上下文调用中使用 第二个( 第 n 个 )参数来表示
//伪数组
  var o={ 0:10,1:20,length:2 };
  
  //让o对象借用数组的push方法来添加元素
  //[].push.call(o,30,50,70)
  [].push.apply(o,[1,2,3])
  console.log(o);//其中对象o中length属性的值也会改变的哦

Vielen Dank fürs Lesen, hoffe ich Es kann jedem helfen, mehr. Für verwandte Inhalte achten Sie bitte auf die chinesische PHP-Website (www.php.cn)!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn