Function definition
Functions contain a set of statements, which are the basic module units of JavaScript and are used for code reuse, information hiding and combined calls. Functions are used to specify the behavior of objects
The four calling modes of functions and the initialization of this
The first: method calling mode
The following examples prove calling through the method calling mode , this is bound to the object that owns the method. For example:
var person = { name: "defaultName", setName : function(name){ this.name = name; } }; person.setName("zhangsan"); alert(person.name);
Second type: function call mode
The following example proves that when called through the function call mode, this is bound to the global object. Such as:
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();
Third: Constructor calling mode
// 定义一个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属性的值
Fourth: Apply calling mode
<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>
The difference between Apply and call
// 定一个对象,包含一个add方法,返回a、b的和 var Person = { 'add' : 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是通过将被调函数的所有参数以逗号分隔的形式展开
The above is the detailed content of Detailed explanation of JavaScript function definition, calling mode and initialization example of this. For more information, please follow other related articles on the PHP Chinese website!