对象赋值时this指向问题 obj1.say = obj2.say;obj1.say()
今天碰到一个问题,有如下的两个对象,问执行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()相关推荐
- java 别名现象_引用与对象赋值时的别名现象
简明现代魔法 -> Java编程语言 -> 引用与对象赋值时的别名现象 引用与对象赋值时的别名现象 2009-09-08 要对一个对象进行操作,我们真正能操作的是该对象的引用. 所以,如果 ...
- python中可迭代对象拆包时、怎么赋值给占位符_python3-数据结构和算法 » 1.2 解压可迭代对象赋值给多个变量...
1.2 解压可迭代对象赋值给多个变量 问题 如果一个可迭代对象的元素个数超过变量个数时,会抛出一个 ValueError . 那么怎样才能从这个可迭代对象中解压出 N 个元素出来? 解决方案 Pyth ...
- 基本类型赋值和普通对象赋值的不同
对象赋值是Reference(参考)赋值,而基本类型是直接值得拷贝. package qwer;public class asdf {public static void main(String[] ...
- JAVA 对象引用,以及对象赋值
2019独角兽企业重金招聘Python工程师标准>>> 关键字: java对象 引用 Java对象及其引用 关于对象与引用之间的一些基本概念. 初学Java时,在很长一段时间里,总觉 ...
- Java中ListE对象赋值问题(引用传递和值传递)
Java中List<E>对象赋值操作问题 业务需求是:取2个集合中的交集对象并返回.如下代码,busMap中key值和stocks中Map中的key值相等的对象则返回继续操作,也就是说剔除 ...
- java 中对象引用,以及对象赋值
Java对象及其引用 Java对象及引用是容易混淆却又必须掌握的基础知识,本章阐述Java对象和引用的概念,以及与其密切相关的参数传递. 在许多Java书中,把对象和对象的引用混为一谈.可是,如果我分 ...
- java两个对象赋值_一起学Java(二十六)----- 对象之间赋值
不积跬步,无以至千里:不积小流,无以成江海. Java语言基础 Java对象之间赋值 赋值是用等号运算符" = "进行的,在对对象进行"赋值"时,实际就是将句柄 ...
- js 对象和对象赋值 去除关联性。
js 对象操作 对象原型操作 把一个对象A赋值给另一个对象B 并且对象B 修改 不会影响 A对象 我最近在做一个vue + element-UI + vue-resource + vuex项目的时候, ...
- PHP对象赋值与克隆
在php5 的对象编程经常提到的一个关键点是"默认情况下对象是通过引用传递的".但其实这不是完全正确的.下面通过一些例子来说明. php的引用是别名,就是两个不同的变量名字指向相同 ...
最新文章
- 写 Python 代码不可不知的函数式编程技术
- maya怎么保持2u_【肘进健康】手肘超伸怎么练?
- Ubuntu 防火墙配置小记
- WinCE系统声音定制
- Leetcode 118. 杨辉三角 (每日一题 20210901)
- 泛型通用函数的一些特殊问题的解决方法
- 一步步编写操作系统 58 门、调用门与RPL序 3
- Servlet添加商品
- 游戏中基于物理的渲染(一)
- 计算机系统-电路设计07-上升沿D触发器的内部电路实现/移位寄存器/串行接口/并行接口
- 雷军:我爱编程这个工作,可以肯定我会干上一辈子
- 调整Virtual Box硬盘大小
- 深入解读Docker底层技术cgroup系列(总览)
- CF1399C Boats Competition
- 【观察】 全新紫光云:“云数智”底盘再升级,背后的三重新价值
- mysql全文索引使用
- 使用Springboot+Feign Clients快速搭建REST客户端应用
- dede织梦网站源码安装教程
- Python .format()的详细使用(英文版)
- 记一次字段类型强转导致的死锁