静态网站开发预期效果,站长工具国产2023,wordpress 柚子,广州市服务好的网站制作排名在JavaScript中一共有下面4种调用方式#xff1a; (1) 基本函数调用 (2)方法调用 (3)构造器调用 (4)通过call()和apply()进行调用 1. 基本函数调用 普通函数调用模式#xff0c;如#xff1a; JavaScript code?1234function fn(o){…… }fn({x:1});在基本函数调用中#x…在JavaScript中一共有下面4种调用方式 (1) 基本函数调用 (2)方法调用 (3)构造器调用 (4)通过call()和apply()进行调用 1. 基本函数调用 普通函数调用模式如 JavaScript code? 1 2 3 4 function fn(o){ …… } fn({x:1}); 在基本函数调用中 1每个参数作为实参传递给声明函数时定义的形参 2this被绑定到全局变量直接调用一般指的是window JavaScript code? 1 2 3 4 5 6 7 8 9 10 var object {value:1}; var value 2; object.printProps function(){ var printValue function(){ console.log(this.value); }; printValue(); console.log(this.value); } object.printProps(); 此时的运行结果是 2 1 在printValue()函数在执行时this.value值为2也就是说this指向的是全局对象而不是对象object。 3返回值函数的返回值成为调用表达式的值。 I. 如果函数返回是解释器到达结尾也就是没有执行到return XXX的语句。返回值为undefined。 II. 如果函数返回是因为接受器执行到return xxx语句 返回return之后的值。 III. 如果return语句后没有值即return则返回undefined。 2. 方法调用 当一个函数被保存为对象的一个属性时称为方法。 1参数和返回值的处理与函数调用一致 2调用上下文this为该对象 JavaScript code? 1 2 3 4 5 6 7 8 9 10 11 function print(){ console.log(this.value); } var value1; var object {value:2}; object.m print; //作为函数调用 print(); //作为方法调用 object.m(); 运行结果为 1 2 当调用print时this绑定的是全局对象打印全局变量value值1。 但是当调用object.m()时this绑定的是方法m所属的对象Object所以打印的值为Object.value即2。 3. 构造器调用 函数或方法调用之前带有关键字new它就构成构造函数调用。如 JavaScript code? 1 2 function fn(){……} var obj new fn(); 1参数处理一般情况构造器参数处理和函数调用模式一致。但如果构造函数没用形参JavaScript构造函数调用语法是允许省略实参列表和圆括号的。 如下面两行代码是等价的。 JavaScript code? 1 2 var obj new Object(); var obj new Object; 2函数的调用上下文为新创建的对象。 JavaScript code? 1 2 3 4 5 6 7 8 9 10 function fn(value){ this.value value; } var value 1; var obj new fn(2); console.log(value); console.log(obj.value); fn(3); console.log(value); console.log(obj.value); 运行结果 1 2 3 2 I. 第一次调用fn()函数是作为构造函数调用的此时调用上下文this被绑定到新创建的对象obj。所以全局变量value值不变obj新增一个属性value值为2 II. 第二次调用fn()函数是作为普通函数调用的此时调用上下为this被绑定到全局对象在浏览器中为window。所以全局对象的value值改变为3而obj的属性值不变。 3构造函数通常不使用return关键字返回值为新对象。而如果构造函数显示地使用return语句返回一个对象那么调用表达式值就为这个对象。如果构造函数使用return语句但没有指定返回值或者返回一个原始值则忽略返回值同时使用新对象作为调用结果。 4.通过call()和apply()进行调用 虽然在一个独立的函数调用中根据是否是strict模式this指向undefined或window不过我们还是可以控制this的指向的要指定函数的this指向哪个对象可以用函数本身的apply()或call()方法它们都是接收两个参数。 call()方法使用它自有的实参列表作为函数的实参apply()方法要求以数组的形式传入参数 apply方法第一个参数是改变后的调用对象第二个参数是将函数参数以数组形式传入[ ]而call()第一个参数与call()方法相同第二个参数是原来参数序列......。转载于:https://www.cnblogs.com/msidevs/p/6058232.html