js中的四种调用,this、that
来源:互联网 发布:mac照片怎么导入手机 编辑:程序博客网 时间:2024/06/18 12:15
介绍函数四种调用模式前,我们先来了解一下函数和方法的概念,其实函数和方法本质是一样,就是称呼不一样而已。函数:如果一个函数与任何对象关系,就称该函数为函数。方法:如果一个函数作为一个对象属性存在,我们就称之为方法。接下来就可以开始今天的主体。
1、函数调用模式。
就是通过函数来调用,规范写法为:function fn(){} fn(); 函数中this的指向->window。案例如下:
var age = 38; var obj = { age: 18, getAge: function() { function foo() { console.log(this.age); // 因为是函数调用模式,所以this指向window全局变量,所以输出为38 } // 只看这个函数是怎么调用,不管函数是在哪声明的! foo(); } }; obj.getAge();
2、方法调用模式。
就是通过对象的属性来调用,规范写法为:
var obj = { say: function() { console.log(this); } }; obj.say();
函数中this的指向->当前对象。案例如下:
var age = 38; var obj = { age: 18, getAge: function() { console.log(this.age);// 18 } }; obj.getAge();//因为是方法调用模式,this指向当前的对象obj。
3、构造函数模式
如果是作为构造函数来调用,那么this就是指向:new创建的新对象!规范写法为:
function foo() { this.name = "123"; } var f0 = new foo(); 没有找到合适的案例,为大家见谅!!!
4、函数上下文(借用方法模式)。
上下文模式中this的指向和前三种模式不一样,它的this指向可以改变,而前三种模式是固定。函数上下文在我理解就是函数作用域。基本语法:apply和call 后面都是跟两个参数
apply和call第一个参数一样:表示使用那个对象来调用函数;apply第二个参数是:是一个数组或伪数组,数组的值做为函数的参数被传入;call第二个参数是:是基本数据类型(number string boolean);案例如下:
//1:求一个数组中的最大值 方法一:常规写法 var arr = [9, 1, 4, 101, 7, 22, 8]; var maxNum = arr[0], i = 1, len = arr.length; for(; i < len; i++) { if(arr[i] > maxNum) { maxNum = arr[i]; } } console.log(maxNum); 方法二:使用上下文调用模式(apply); var arr = [9, 1, 4, 101, 7, 22, 8]; var maxNum=Math.max.apply(window,arr);//Math.max是window中的排序方法我们可以通过apply借用window中Math.max方法来对数组进行排序。 console.log(maxNum);
阅读全文
0 0
- js中的四种调用,this、that
- js中的四种调用,this、that
- 微信小程序 page.js 中的 函数调用(this, that)
- JS中this的四种调用模式
- JavaScript中的this关键字使用的四种调用模式
- js中this和that
- js中 this与that
- js中的this和函数的调用
- JavaScript四种调用模式和this
- JS中this的四种用法
- JS中this的四种用法
- js this机制的四种规则
- js this函数调用
- JavaScript 中的 var that = this
- js中的this
- js中的this关键字
- 关于js 中的 this
- js中的this详解
- 【工作笔记】微信公众号vm页面循环遍历
- Windows Server 2016远程桌面服务配置和授权激活
- java中for和foreach循环
- 多线程
- BZOJ 1419 DP 解题报告
- js中的四种调用,this、that
- C#中 Thread,Task,Async/Await,IAsyncResult 的那些事儿!
- 高维数据可视化
- RecyclerView的案例和解析
- Android组件学习笔记(连接互联网)
- tf.contrib.layers.xavier_initializer
- BZOJ3503
- C++ typedef void *HANDLE
- 5倍经验日