题目描述:写出执行结果并解释原因

var fullname = 'a';
var obj = {fullname: 'b',prop : {fullname: 'c',getFullname: function(){return this.fullname;}}
};
console.log(obj.prop.getFullname());
var test = obj.prop.getFullname;
console.log(test());

答案:

c
a

解析:

  • 原因在于 this 指向的是函数的执行环境, this 取决于其被谁以哪种方式调用了,而不是被谁定义了。
  • 对第一个 obj.prop.getFullname() 而言,getFullname() 是作为 obj.prop 对象的一个方法调用的,因此此时的执行环境应该是这个对象。
  • obj.prop.getFullname 被分配给 test 变量时,此时的执行环境变成了全局对象(window),原因是 test 是在全局作用域下定义的。因此,此时 this 指向的是全局作用域的 fullname 变量,即 a

this 指向取决于函数被谁以何种方式调用的,一般分为四种方式

  • 被当作对象的属性调用,this 指向调用对象,例如上面的 obj.prop.getFullname()
  • 在全局作用域下直接调用,即 fn(),例如上面 test = obj.prop.getFullname; test()。这里 test 就是直接调用。
  • 使用 new 关键字调用,this 指向新生成的实例对象
  • 使用 call、apply、bind 强绑定调用,this 指向绑定对象

每日一题(二二)var fullname = 'a'; var obj = { fullname: 'b', prop : { fullname: 'c'相关推荐

  1. 每日刷题记录 (二十)

    文章目录 第一题: 16. 最接近的三数之和 解题思路: 代码实现: 第二题: 43. 字符串相乘 解题思路: 代码实现: 第三题: 59. 螺旋矩阵 II 解题思路: 代码实现: 第四题: 89. ...

  2. LeetCode每日刷题Day10---L938二叉搜索树的范围和

    L938二叉搜索树的范围和 GitHub 账户:LuvnJoae  欢迎关注! https://github.com/LuvnJoae GitHub 代码链接:https://github.com/L ...

  3. 每日刷题记录 (二十七)

    文章目录 第一题: 1108. IP 地址无效化 解题思路: 代码实现: 第二题: 1431. 拥有最多糖果的孩子 解题思路: 代码实现: 第三题: 1720. 解码异或后的数组 解题思路: 代码实现 ...

  4. LeetCode每日一题 530. 二叉搜索树的最小绝对差

    题目链接 思路 利用二叉树的性质遍历取相邻数字差的最小值. class Solution {public:int ret;TreeNode* left;int getMinimumDifference ...

  5. 【蓝桥杯刷题篇】acwing每日一题【二】数圈圈

  6. 每日一题(二十九):Oil Deposite

    题目描述: The GeoSurvComp geologic survey company is responsible for detecting underground oil deposits. ...

  7. 经典算法题每日演练——第二十二题 奇偶排序

    原文:经典算法题每日演练--第二十二题 奇偶排序 这个专题因为各种原因好久没有继续下去了,MM吧...你懂的,嘿嘿,不过还得继续写下去,好长时间不写,有些东西有点生疏了, 这篇就从简单一点的一个&qu ...

  8. 【解题报告】Leecode 700. 二叉搜索树中的搜索——Leecode每日一题

    今天是坚持每日一题打卡的第二十四天 题目链接:https://leetcode-cn.com/problems/search-in-a-binary-search-tree/ 题解汇总:https:/ ...

  9. Java实习生常规技术面试题每日十题Java基础(二)

    目录 1. JAVA 的反射机制的原理. 2.静态嵌套类(Static Nested Class)和内部类(Inner Class)的不同? 3.如何将String类型转化成Number类型. 4.什 ...

最新文章

  1. Netflix发布Polly.JS,一个用于HTTP交互的开源库
  2. C++ String转int
  3. n阶自相关matlab代码,随机信号及其自相关函数和功率谱密度的MATLAB实现.doc
  4. 100篇原创博文有感
  5. 父组件和子组件同是使用 beforeDestroy 钩子 保存同一份数据
  6. F - 最短路 HDU - 2544(最短路的模板)
  7. GTA5快速进入线上模式
  8. Kylin源码解析——从CubingJob的构建过程看Kylin的工作原理
  9. 百度架构师手把手教深度学习之心得
  10. Oracle 字符函数
  11. DirectShow开发
  12. 划分非独立同分布(Non-IID)数据集
  13. 如何在博客插入UML图
  14. Win10安装不上VC++2008错误1935解决方法
  15. 第一部分 思科九年 一(4)
  16. [kuangbin带你飞]专题一 简单搜索D - Fliptile(POJ 3279)
  17. CSS3:图片的高斯模糊效果
  18. Fastdata极数:2020中国K12在线教育行业报告
  19. 搭建系统|为何我坚持要用Python搭建属于自己的股票量化交易系统
  20. 什么是缓存架构,什么又是后端分布式多级缓存架构,全文解析

热门文章

  1. 青岛财政局计算机专家招聘,中共青岛市财政局委员会关于丁莉萍等9名同志续聘职务的通知...
  2. 软件程序破解的难度和原理你懂多少?
  3. 【jQuery】利用lazyload.js延迟加载技术应对多图杀猫的单一页面
  4. Zookeeper安装与可视化客户端详细使用教程
  5. WindowsApps目录占用大量空间
  6. Selenium——python中执行js脚本
  7. 计算机硬件存在的故障,计算机硬件故障及处理.ppt
  8. 计算机关系的用算,计算机软考考试必备知识点:关系运算
  9. Python学习记录-实战三、模拟12306火车票订票流程
  10. TensorFlow入门教程(十):LSTM网络实现手写字体识别