当指定为对象属性时,IIFE 如何影响其中的此关键字

2024-04-03

var a={
   name:"Rhona",
   check:(function(){
          return this.name;
            })();
   }
 console.log(a.check)// This returns ""

一个空字符串我希望它返回 Rhona,它没有给出 undefined 或 null,但是一个空字符串这里发生了什么?

我还想知道为什么当我访问不存在的对象属性时,它给出 undefined 而不是给出 not Define 我认识到 undefined 是在创建阶段赋予变量的值,执行阶段然后初始化该值,所以如果没有初始化它保持未定义,所以当我访问一个对象属性时,假设a.lastname不存在,java脚本不应该返回未定义,为什么它给出未定义?


IIFE 立即执行(即第一个“I”1)。因为你调用它时没有做任何特殊的设置this, this默认为全局对象(在松散模式下)或undefined(在严格模式下)。 (看“this”关键字如何工作? https://stackoverflow.com/questions/3127429/how-does-the-this-keyword-work)

您基本上是这样做的,但没有临时变量:

var temp = (function() {
    return this.name;
})();
var a = {
    name: "Rhona",
    check: temp
}
console.log(a.check) // This returns ""

你得到的原因""而不是undefined是你使用的是松散模式,所以this指的是全局对象,也就是浏览器上的window,window有一个name属性(当前窗口的名称)通常为空("").


1 “IIFE”中的第一个“I”是“内联”或“立即”,具体取决于您问的是谁。 :-) 例如,“内联调用函数表达式”或“立即调用函数表达式”。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当指定为对象属性时,IIFE 如何影响其中的此关键字 的相关文章

随机推荐

  • C# 奇怪的 WPF 组合框行为

    I have simple window This is what happens when I click ComboBox List appears in upper left corner of screen instead of u
  • 构建 Erlang 服务器场(用于业余爱好项目)最便宜的方法是什么? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 假设我们有一个 本质上并行 的问题需要用 Erlang 软件来解决 我们有很多并行进程 每个进程都执行顺序代码 不是数字运算 并且我们向它们投入的 C
  • C++ 元编程中的 typedef 与公共继承

    免责声明 这个问题与继承而不是 typedef https stackoverflow com questions 441744 inheritance instead of typedef到目前为止我找不到任何类似的问题 我喜欢玩 C 模
  • 在 iPhone 中显示图库中的图像

    我是 iPhone 新手 现在正处于学习阶段 实际上我想实现读取存储在 iPhone PHOTO Gallery 中的图像 然后将其显示到我的应用程序上 我在很多搜索引擎中进行了搜索 但找不到任何东西 你们这里都是专业人士 请指导我完成一些
  • 使用 PHP 反向抓取图像

    我需要使用 google 反向图像搜索来获取一些图像 API 不支持该搜索 但幸运的是 您可以通过图像的直接链接查询 google 它仍然显示结果 因此 googleURL https www google com searchbyimag
  • 我应该使用哪个版本的 iOS SDK?

    请告诉我应该使用哪个版本的 iOS SDK 以便我的应用程序可以在 iPhone 3 0 或更高版本上运行 您应该注意两个不同的概念 基础 SDK 这是您用来构建应用程序的内容 最新版本是 4 2 因此您应该使用它来构建您的应用程序 iOS
  • 自动在输入框中填写数据

    我有四个输入框 如果用户填充第一个框并单击按钮 那么它应该使用用户在第一个框中输入的值自动填充剩余的输入框 可以使用javascript来完成吗 或者我应该说用用户输入的最后数据预先填充文本框 单击按钮时 调用此函数 function fi
  • 为什么“notifyDatasetChanged()”不通知所有可见项目?

    背景 注意 我已经使用listViews很多年了 所以我非常熟悉如何使用适配器 ViewHolders等 所以这个问题对我来说没有意义 这次我遇到了一个非常奇怪的行为 由于某种原因只发生在 2 台设备上 LG G2 搭载 Android 4
  • 即使图像没有改变,如何更新数据库记录

    我使用 localDB 作为我的数据库 我有一个员工表 员工图像存储在另一个表中 这是我用于创建和更新的存储过程 IF NOT EXISTS SELECT FROM dbo Employee WHERE employee id employ
  • 如何以 PDF 格式呈现 ASP.NET MVC 视图

    我正在使用 ExpertPDF 的 Html to PDF 转换实用程序来解决这个问题 尽管如果有足够的文档 我也愿意接受其他库 简而言之 我有一个以特定方式格式化的视图 我想将其呈现为用户可以保存到磁盘的 PDF 文档 到目前为止 我拥有
  • 在我的 Angular JS 单元测试中,我什么时候应该使用 $provide 还是 Jasmine Spies

    我在开发一个大型 Angular 应用程序 最初我们通过使用 provide 来模拟服务来完成大量测试 然而 我们现在在测试中有很多 Jasmine Spies 以便对服务进行存根和监视 i e spyOn myService myMeth
  • 有没有办法取消注册套接字通道上的选择器

    这是一个非常简单的问题 但我发现需要注销一个俯瞰我的 java 套接字通道的选择器 SocketChannel client myServer accept forks off another client socket client co
  • 不可编辑的 JComboBox 中所选项目的背景颜色

    不可编辑的 JComboBox 中所选项目的背景颜色是一种蓝色 有什么办法让它变成不同的颜色 例如白色吗 这应该有效 jComboBox1 setRenderer new DefaultListCellRenderer Override p
  • android 中的 singleTask launchMode 不起作用

    所以 我有 4 项活动 活动Activity1 Activity2 Activity3 and Activity4 我从Activity1然后在某个事件中我开始Activity2然后在某个事件上Activity2我开始Activity3作为
  • 如何在SQL Server Management Studio中获得“管理员权限”?

    我使用 SQL Management Studio 2008 Express 作为本地 SQL Server 2008 Express 实例的图形界面 这两个实例仅在本地作为我的 Web 项目的测试和开发界面 最近我对 SQL 编码越来越有
  • 将模型应用于多个时间序列

    假设我有多个时间序列需要预测 如果我为每个对象都有适当的时间序列对象 我可以拟合 为了示例 ARIMA 模型等等 但是 我知道当所有系列都在一个中时 必须有一种简单的方法来自动化此过程xts对象 暂且不说不同的变量可能需要不同的 ARIMA
  • 反序列化匿名 JSON 数组?

    我有一个想要反序列化的匿名数组 这里是第一个数组对象的示例 time 08 55 54 date 2016 05 27 timestamp 1464332154807 level 3 message registerResourcePath
  • angular-google-maps 搜索功能的工作示例

    有没有人有一个有效的搜索框示例 例如 angular google maps team 在本网站的 搜索框 下显示的搜索框 https angular ui github io angular google maps api https a
  • 将对象初始化为全零

    通常 数据结构的有效初始化是将所有成员设置为零 即使在使用 C 进行编程时 也可能需要与外部 API 进行交互 这种情况就是如此 之间有什么实际区别 some struct s memset s 0 sizeof s 简单地 some st
  • 当指定为对象属性时,IIFE 如何影响其中的此关键字

    var a name Rhona check function return this name console log a check This returns 一个空字符串我希望它返回 Rhona 它没有给出 undefined 或 n