今天碰到一个问题,有如下的两个对象,问执行obj1.say()输出什么?

var obj1 = ( function() {var inner = 'a-1'return {inner: 'a-2',say: function() {console.log( inner )console.log( this.inner )}}
} )()var obj2 = ( function() {var inner = 'b-1'return {inner: 'b-2',say: function() {console.log( inner )console.log( this.inner )}}
} )()
obj1.say = obj2.say;
obj1.say()

当执行obj1.say()的时候会输出什么呢?

思考一分钟

你的答案是什么呢?

是不是'a-1' 和 'a-2',如果是那恭喜你答错了。

正确的答案应该是'b-1' 和 'a-2'。

至于为什么,console.log( this.inner ) 打印出'a-2'应该没有什么疑问,因为这里面的this是调用函数的调用者所指向的对象,在这里

obj1.say()的调用者是obj1,所以this就指向他。

console.log( inner )为什么打印出'b-1',我也没有想清楚,谁知道的话可以留言讨论

对象赋值时this指向问题 obj1.say = obj2.say;obj1.say()相关推荐

  1. java 别名现象_引用与对象赋值时的别名现象

    简明现代魔法 -> Java编程语言 -> 引用与对象赋值时的别名现象 引用与对象赋值时的别名现象 2009-09-08 要对一个对象进行操作,我们真正能操作的是该对象的引用. 所以,如果 ...

  2. python中可迭代对象拆包时、怎么赋值给占位符_python3-数据结构和算法 » 1.2 解压可迭代对象赋值给多个变量...

    1.2 解压可迭代对象赋值给多个变量 问题 如果一个可迭代对象的元素个数超过变量个数时,会抛出一个 ValueError . 那么怎样才能从这个可迭代对象中解压出 N 个元素出来? 解决方案 Pyth ...

  3. 基本类型赋值和普通对象赋值的不同

    对象赋值是Reference(参考)赋值,而基本类型是直接值得拷贝. package qwer;public class asdf {public static void main(String[] ...

  4. JAVA 对象引用,以及对象赋值

    2019独角兽企业重金招聘Python工程师标准>>> 关键字: java对象 引用 Java对象及其引用 关于对象与引用之间的一些基本概念. 初学Java时,在很长一段时间里,总觉 ...

  5. Java中ListE对象赋值问题(引用传递和值传递)

    Java中List<E>对象赋值操作问题 业务需求是:取2个集合中的交集对象并返回.如下代码,busMap中key值和stocks中Map中的key值相等的对象则返回继续操作,也就是说剔除 ...

  6. java 中对象引用,以及对象赋值

    Java对象及其引用 Java对象及引用是容易混淆却又必须掌握的基础知识,本章阐述Java对象和引用的概念,以及与其密切相关的参数传递. 在许多Java书中,把对象和对象的引用混为一谈.可是,如果我分 ...

  7. java两个对象赋值_一起学Java(二十六)----- 对象之间赋值

    不积跬步,无以至千里:不积小流,无以成江海. Java语言基础 Java对象之间赋值 赋值是用等号运算符" = "进行的,在对对象进行"赋值"时,实际就是将句柄 ...

  8. js 对象和对象赋值 去除关联性。

    js 对象操作 对象原型操作 把一个对象A赋值给另一个对象B 并且对象B 修改 不会影响 A对象 我最近在做一个vue + element-UI + vue-resource + vuex项目的时候, ...

  9. PHP对象赋值与克隆

    在php5 的对象编程经常提到的一个关键点是"默认情况下对象是通过引用传递的".但其实这不是完全正确的.下面通过一些例子来说明. php的引用是别名,就是两个不同的变量名字指向相同 ...

最新文章

  1. 写 Python 代码不可不知的函数式编程技术
  2. maya怎么保持2u_【肘进健康】手肘超伸怎么练?
  3. Ubuntu 防火墙配置小记
  4. WinCE系统声音定制
  5. Leetcode 118. 杨辉三角 (每日一题 20210901)
  6. 泛型通用函数的一些特殊问题的解决方法
  7. 一步步编写操作系统 58 门、调用门与RPL序 3
  8. Servlet添加商品
  9. 游戏中基于物理的渲染(一)
  10. 计算机系统-电路设计07-上升沿D触发器的内部电路实现/移位寄存器/串行接口/并行接口
  11. 雷军:我爱编程这个工作,可以肯定我会干上一辈子
  12. 调整Virtual Box硬盘大小
  13. 深入解读Docker底层技术cgroup系列(总览)
  14. CF1399C Boats Competition
  15. 【观察】 全新紫光云:“云数智”底盘再升级,背后的三重新价值
  16. mysql全文索引使用
  17. 使用Springboot+Feign Clients快速搭建REST客户端应用
  18. dede织梦网站源码安装教程
  19. Python .format()的详细使用(英文版)
  20. 记一次字段类型强转导致的死锁

热门文章

  1. 配置FCKeditor出现严重问题,调试时报错:
  2. HIT-ICS程序人生大作业
  3. 人生总在不断的折腾,你不折腾,就要被折腾......
  4. 读书笔记--项亮《推荐系统实践》第一章
  5. 小说里的编程 【连载之三十五】元宇宙里月亮弯弯
  6. 学生为什么要学python_碎碎念|为什么要学Python
  7. Java练习题-龟兔赛跑
  8. 冯诺依曼体系结构与操作系统的理解
  9. 总结ctf中 MD5 绕过的一些思路
  10. Link-aggregation端口聚合