函数this

函数相关的属性 1,arguments *伪数组对象 *以数组形式来存储函数在执行时所传入的所有实参。 *callee 返回的是正在被执行的函数 匿名函数的递归调用 *length 实参的个数 2,caller:返回调用函数的 函数。 3.length :定义形参的个数 4. name:存储函数的名字(有兼容性问题) 函数的四种调用模式 1,普通函数执行模式 直接拿到函数的名字 加上()。 在该模式下,函数内部this的指向为window对象。说白了就是全局对象。 2,构造函数模式 调用函数是,配合着new关键字来执行某个函数。此时执行模式为构造函数模式 函数内部的this指向为当前创建出来的实例。 一new就执行 3,方法调用模式 将一个函数赋值给某个对象的属性。然后通过该对象去执行函数。此时 为方法调用模式。 this的指向为方法的调用者。 4,call/apply(上下文模式) #fn.call(thisObj, arg1~argN) *thisObj 表示改变后的this指向 *arg1~argN 表示fn执行时传入的实参。 *call方法在执行的时候,fn函数也同时执行。同时将函数fn内部的this替换成指定的thisObj对象。 #在该模式下,call|apply 方法的第一个参数为函数fn内的this指向。 #fn.apply(thisObj,[数组]) *thisObj 表示改变后的this指向。~ *【数组】含义:将数组中的元素作为fn执行时传入的实参。 *apply方法在执行的时候。fn函数也同时执行。同时将函数fn内部的this替换成指定的thisObj对象。 #在该模式下,call|apply 方法的第一个参数为函数fn内的this指向 屏幕剪辑的捕获时间: 2017/3/1 16:19 call、apply上下文模式应用 1,改变this指向 2,借调方法 *数组的合并 *获取内置对象类型 #对象类型确定:通常使用构造函数名字--小写方式 sort方法 1,默认按照UniCode编码来排序 2,使用sort方法的回调函数来指定排序规则 *定义回调函数的两个形参 a, b *a 相对于b 位置在前 *如果回调函数的返回值 大于 0 ,交换位置 *如果返回值 小于0 不交换位置 *如果等于0 保持相对位置

方法的本质是函数

window 对象的length表示 该窗口有多少

iframe标签的个数。

window对象有name属性。而且打印出来是空字符串

字符串的indexOf方法不能传入正则表达式

把数组或者伪数组的所有元素当实参传的时候要用apply

在实际开发时,如果在需要改变函数或方法内部的this指向就

只能使用上下文模式来修改。 apply call

2,借调方法:在开发时,发现内置对象实现了所需的功能,而自定义对象

没有改方法,那么可以不用自己实现直接通过向下文模式将该方法借调过来

此时根据给方法传实参 哪个方便 来去选择用call 还是apply。

3,在上下文中 如何确定this指向

*如果第一个参数为null 或者undefined的值 this的指向为window对象

*如果第一个参数为基本数据类型。此时this的指向为其对应的包装类型

比如数字1,变成数字对象1.()隐式转换

*为对象,this指向该对象。

你可能感兴趣的:(函数this)