Maison >interface Web >js tutoriel >Explication détaillée de la définition de la fonction JavaScript, du mode d'appel et de l'exemple d'initialisation de celui-ci

Explication détaillée de la définition de la fonction JavaScript, du mode d'appel et de l'exemple d'initialisation de celui-ci

伊谢尔伦
伊谢尔伦original
2017-07-25 10:43:282087parcourir

Définition de la fonction

La fonction contient un ensemble d'instructions, qui sont les unités de module de base de JavaScript et sont utilisées pour la réutilisation du code, la dissimulation d'informations et les appels combinés. Les fonctions sont utilisées pour spécifier le comportement des objets

Quatre modes d'appel de fonctions et l'initialisation de celui-ci

Le premier : mode d'appel de méthode
Les exemples suivants démontrent l'appel via le mode d'appel de méthode, il est lié à l'objet qui possède la méthode. Par exemple :

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

Deuxième : mode d'appel de fonction
L'exemple suivant prouve que lorsqu'il est appelé via le mode d'appel de fonction, celui-ci est lié à l'objet global. Tels que :

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();

Troisième : mode d'appel du constructeur

// 定义一个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属性的值

Quatrième : appliquer le mode d'appel

<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>

La différence entre appliquer et appeler

// 定一个对象,包含一个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是通过将被调函数的所有参数以逗号分隔的形式展开

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn