Heim  >  Artikel  >  Web-Frontend  >  Detaillierte Erläuterung der JavaScript-Funktionsdefinition, des Aufrufmodus und eines Initialisierungsbeispiels hierfür

Detaillierte Erläuterung der JavaScript-Funktionsdefinition, des Aufrufmodus und eines Initialisierungsbeispiels hierfür

伊谢尔伦
伊谢尔伦Original
2017-07-25 10:43:282046Durchsuche

Funktionsdefinition

Funktion enthält eine Reihe von Anweisungen, die die grundlegenden Moduleinheiten von JavaScript sind und für die Wiederverwendung von Code, das Ausblenden von Informationen und kombinierte Aufrufe verwendet werden. Funktionen werden verwendet, um das Verhalten von Objekten anzugeben

Vier Aufrufmodi von Funktionen und deren Initialisierung

Der erste: Methodenaufrufmodus
Die folgenden Beispiele veranschaulichen den Aufruf über Methodenaufrufmodus, dieser ist an das Objekt gebunden, dem die Methode gehört. Zum Beispiel:

var person = {
    name: "defaultName",
    setName : function(name){
        this.name = name;
    }
};
person.setName("zhangsan");
alert(person.name);

Zweitens: Funktionsaufrufmodus
Das folgende Beispiel beweist, dass dies beim Aufruf über den Funktionsaufrufmodus an das globale Objekt gebunden ist. Zum Beispiel:

var test = add(value1, value2);
var name = "defaultName";
var person = {
    name: "zhangsan", // person中定义的name
    getName : function(){
        // 通过此方法可以将test函数的this改变为person的this对象
        var that = this;  // 解决方案
        // getName中定义的name
        var name = "lisi";
        var test = function(){
            // 通过that来访问person中的对象
            // this指向Global对象
            // this.name = defaultName
            // that.name = zhangsan
            alert([this.name, that.name]);
        };
        test(); // 函数调用模式
    }
}
person.getName();

Drittens: Konstruktor-Aufrufmodus

// 定义一个Person的构造器,在调用时一定要用new调用
var Person = function(name){
    this.name = name;
}
// 添加一个方法到Person
Person.prototype.getName = function(){
    return this.name;
};
// 构造一个Person对象
var person = new Person("zhangsan");
alert(person.getName()); // 调用getName获取person对象中name属性的值

Viertens: Apply-Aufrufmodus

<script type="text/javascript">
    // 定一个累加方法。如sum(1,2,3,4...)
    // 该方法位于window执行环境中。
    var displayName = function(){
        alert("sum的执行环境: " + typeof(this));
        alert("Name: " + this.name); // 取出当前执行环境中name属性
    }
    // 定一个Person对象
    var Person = {
        name: "zhangsan"
    };
    displayName.apply(Person);
</script>

Der Unterschied zwischen Apply und Call

// 定一个对象,包含一个add方法,返回a、b的和
var Person = {
    &#39;add&#39; : function(a, b){
        return a + b;
    }
};
// 显示a、b的和
function showInfo(a, b){
    alert(this.add(a, b));
}
// 通过apply方法改变showInfo方法的this指向
//showInfo(1, 3); // 对象不支持次对象
showInfo.apply(Person, [1, 3]);
showInfo.call(Person, 1, 3);
// 从上面可以看出,apply和call的区别是apply接受一个数组作为被调函数的参数,
// 而call是通过将被调函数的所有参数以逗号分隔的形式展开

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der JavaScript-Funktionsdefinition, des Aufrufmodus und eines Initialisierungsbeispiels hierfür. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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