ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScriptの関数定義、呼び出しモード、初期化例の詳細説明

JavaScriptの関数定義、呼び出しモード、初期化例の詳細説明

伊谢尔伦
伊谢尔伦オリジナル
2017-07-25 10:43:282063ブラウズ

関数定義

関数には、JavaScript の基本モジュール単位であるステートメントのセットが含まれており、コードの再利用、情報の非表示、呼び出しの結合に使用されます。関数は、オブジェクトの動作を指定するために使用されます

関数の 4 つの呼び出しモードと this の初期化

1 つ目: メソッド呼び出しモード
次の例は、メソッド呼び出しモードを通じて呼び出された場合、これがメソッドを所有するオブジェクト。例:

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

2 番目のタイプ: 関数呼び出しモード
次の例は、関数呼び出しモードを通じて呼び出された場合、これがグローバル オブジェクトにバインドされることを証明します。例:

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

3 番目: コンストラクター呼び出しモード

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

4 番目: apply 呼び出しモード

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

Apply と 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是通过将被调函数的所有参数以逗号分隔的形式展开

以上がJavaScriptの関数定義、呼び出しモード、初期化例の詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。