函数四种调用模式以及其中的this指向
函数调用的四种模式及其中的`this`指向
在编程的世界里,理解函数的调用模式和`this`的指向是每一个开发者必须掌握的基础知识点。今天,让我们跟随狼蚁网站的SEO优化,深入了解这四种函数调用模式以及其中的`this`指向。
第一种函数直接执行模式
当函数直接被执行时,如果没有特定的上下文对象,`this`通常指向全局对象(在浏览器中为`window`)。例如:
```javascript
function add(a, b) {
console.log(this); // this === window
return a + b;
}
add(10, 20);
```
第二种对象方法的调用模式
当一个函数作为对象的属性(方法)被调用时,`this`通常指向该对象。例如:
```javascript
var obj = {
name: 'aaa',
age: 20,
said: function() {
console.log(this); // this === obj,这里的this指的是被调用者对象
}
}
obj.said();
```
第三种构造器的调用模式
当使用`new`关键字创建一个新的对象实例时,构造器函数中的`this`指向新创建的对象实例。例如:
```javascript
function School() {
this.said = function() {
console.log(this); // 对象调用自己的方法,this === 当前对象实例nanj
}
}
var nanj = new School();
nanj.said();
```
第四种call和apply调用模式
当你使用函数的`call`或`apply`方法时,你可以为函数指定一个特定的上下文对象(即`this`的值)。例如:
```javascript
function change(a, b) {
this.detial = a + b; // 注意这里应该是 this.detial = a + b;,而不是 this.detial=ab; 否则会出现语法错误。下同。
console.log(this); // 指定了上下文对象后的函数中的this指向该对象。例如这里为p、q等对象。下文同样适用此逻辑。}var p = {};change.call(p, 4, 5);console.log(p.detial);var q = [];change.call(q, 5, 10);console.log(q.detial);var arr = [];change.apply(arr, [10, 10]);console.log(arr.detial);var str = {};change.apply(str, [20, 20]);console.log(str.detial);```希望本文的内容对大家的学习或工作有所帮助,也希望大家多多支持狼蚁SEO!以上就是本文的全部内容。如果您有任何疑问或建议,请随时与我们联系。我们也期待您的关注和支持。让我们一起学习进步,共同提高!
编程语言
- 函数四种调用模式以及其中的this指向
- PHP var关键字相关原理及使用实例解析
- JS实现获取当前URL和来源URL的方法
- 深入理解PHP之源码目录结构与功能说明
- js如何打印object对象
- JS实现前端页面的搜索功能
- php面向对象值单例模式
- video.js 一个页面同时播放多个视频的实例代码
- js监听键盘事件的方法_原生和jquery的区别详解
- vue语法之拼接字符串的示例代码
- JS实现隐藏同级元素后只显示JS文件内容的方法
- 详解Windows10下载mysql的教程图解
- php缩放图片(根据宽高的等比例缩放)实例介绍
- yii form 表单提交之前JS在提交按钮的验证方法
- jQuery实现设置、移除文本框默认值功能
- JS实现数组去重复值的方法示例