首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JavaScript:*可以*用call / apply / bind设置未定义的属性吗?

JavaScript:*可以*用call / apply / bind设置未定义的属性吗?
EN

Stack Overflow用户
提问于 2021-03-26 23:54:57
回答 1查看 28关注 0票数 0

我想我刚刚发现了关于JavaScript的一个新的奇怪的事情。

有人知道这到底是怎么回事吗?

代码语言:javascript
复制
let test;

function setProp() {
  this.prop = 42;
}
setProp.call(test);

// No error yet?
// So 42 should be saved inside test.prop?

// Though test=undefined?

console.log(test);
try {
  console.log(test.prop);
} catch (e) {
  console.log(e.message);
}

// -> undefined
// -> Cannot read property 'prop' of undefined
// Ok, indeed

function getProp() {
  console.log(this.prop);
}
getProp.call(test);

// -> 42
// Wait, what?

我只是好奇:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-26 23:58:33

在非严格模式下,将undefined作为第一个参数传递给.call()意味着您希望它成为全局对象(如window)。

尝试在顶部使用"use strict";进行测试,看看是否会有所不同。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66820254

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档