1 Star 0 Fork 0

癫疯丶歌谣/前端牛客网面试题刷题

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
call源码解析0410.html 1.41 KB
一键复制 编辑 原始数据 按行查看 历史
癫疯丶歌谣 提交于 2023-04-19 14:46 . 增加学习
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
let obj = {
name: 'Alvin'
}
let name = 'window'
function fn() {
console.log(this.name);
}
//给Function的原型属性新增一个_call方法
Function.prototype._call = function (obj, ...params) {
//1. 如果obj是undefined或null,应该让obj指向window
obj == null ? obj = window : null;
//2. 如果obj不是一个对象,需要转成对象
if (typeof obj !== 'function' && typeof obj !== 'object') {
obj = Object(obj);
}
//3.给obj添加一个唯一值属性,避免与原有属性冲突
let objKey = Symbol();
//给obj添加一个唯一值属性objKobjKey并赋值为调用函数
obj[objKey] = this;''
//4.调用函数fn并接收返回值
let result = obj[objKey](...params);
//5.删除给obj新增的临时属性
delete obj[objKey];
//6.将函数fn的执行结果返回
return result;
}
fn();//window
fn._call(obj);//Alivn
</script>
</body>
</html>
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
JavaScript
1
https://gitee.com/geyaoisgeyao/geyao.git
git@gitee.com:geyaoisgeyao/geyao.git
geyaoisgeyao
geyao
前端牛客网面试题刷题
master

搜索帮助

0d507c66 1850385 C8b1a773 1850385