没有合适的资源?快使用搜索试试~ 我知道了~
Vuact#Blog#JavaScript深入 模拟实现call、apply1
需积分: 0 0 下载量 24 浏览量
2022-07-25
14:31:03
上传
评论
收藏 4KB MD 举报
温馨提示
试读
(1)call 的第一个参数改变了this 的指向 (2)call 将后面的参数依次赋给了bar函数的形参 (3)执行bar函数 (1)改变this指向:我们将
资源推荐
资源详情
资源评论
# 一、call()
call() :在使用一个指定的 this 值和若干个指定的参数值的前提下调用某个函数或方法。
call()允许为不同的对象分配和调用属于另一个对象的函数/方法。
### 1、实际的call()
```javascript
var value = 2;
var foo = { value: 1 };
function bar(name, age) {
console.log(this.value);
console.log(name, age);
}
bar.call(foo ,'bty', 18); // 1 'bty' 18
bar.call(null, 'bty'); // 2 'bty' undefined
function bar2(name){
return {
value:this.value,
name:name
}
}
console.log(bar2.call(foo ,'bty')); //{value: 1, name: "bty"}
```
我们看看执行call的过程中发生了什么:
(1)call 的第一个参数改变了this 的指向
(2)call 将后面的参数依次赋给了bar函数的形参
(3)执行bar函数
(4)若call的第一个参数传 null,则this指向 window
(5)返回bar2函数的return值
### 2、模拟实现call() 对应上面的步骤,模拟: (1)改变this指向:我们将bar函数设为call的第一个参数的属性,即foo.fn = bar; ```javascript Function.prototype.call = function (context) { context.fn = this; //(1) } ``` (2)给bar函数的形参赋值:将call函数的arguments 的�
### 2、模拟实现call() 对应上面的步骤,模拟: (1)改变this指向:我们将bar函数设为call的第一个参数的属性,即foo.fn = bar; ```javascript Function.prototype.call = function (context) { context.fn = this; //(1) } ``` (2)给bar函数的形参赋值:将call函数的arguments 的�
点击阅读更多
资源评论
西门镜湖
- 粉丝: 23
- 资源: 296
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功