0
点赞
收藏
分享

微信扫一扫

JS之-函数调用模式及其this的含义

每一个函数在运行的时候都会创建一个独有活动对象,在活动对象中包含函数的参数、函数内部声明的数据。除了定义参数与声明的变量与函数外,在这个活动对象上还存在一个叫做上下文的(context) 东西

函数的5种调用模式及this的含义

1. 函数模式:this 表示全局对象(浏览器中是window,在node 中是 global)

  1. 构造器(constructor)模式:this 表示刚刚创建出来的对象
  2. 方法(method)模式:this 表示调用方法的对象
  3. 上下文(context)模式:this 可以使用参数来动态描述(动态绑定)
  4. bind 模式:this 与上下文模式类似,也是通过参数来确定(静态绑定)

箭头函数

函数模式:

特点:独立运行,调用语法格式前面没有任何引导数据;

function foo(){console.lot(1)};
foo();    //foo() 前面没有任何引导

构造器模式

语法:new 构造器函数()

function Person(){}
var p = new Person();
// 运行过程:
//1. 先使用new 运算符分配内存空间,在 js 中就是创建对象(一个空的对象,一个具有原型结构的对象) 
//  - 空对象的原型(__prop__) 是:Person.prototype
//2. 调用构造函数
// - 创建活动对象
// - this 创建的对象的引用会作为 活动对象 中的上下文对象被引用,即:构造器中的this 指向内存地址(一个空对象)
// - 预解析
// - 解释执行

方法调用模式:

一个函数作为对象的一个成员,由方法引导调用,这个调用就是方法调用,表现为 调用前有一个引导数据:满足通过 XXX 访问到方法名 调用;

var o ={
	run :function(){
  	console.log('run');
  }
}
o.run();

练习:

function foo(){
	console.log('foo');
}
var arr =[];
arr.push(foo);
var fn = arr[0];
fn(); //是什么调用:函数
arr[0]();	// 是什么调用:方法

举报

相关推荐

0 条评论