代码拉取完成,页面将自动刷新
<!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>
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。