某人提出

请教下谁能解释下这个值
var name = "The Window";
        var object = {
            name: "My Object",
            getName: function () {
                return this.name;
            }
        };
 alert((object.getName = object.getName)());
--------The Window

经过解释之后

object.getNameFunc()();  我理解是the window,
但是(object.getName = object.getName)() 怎么也是the window呢?

var a = 1;
a = a返回啥,你就知道为什么是the window了

最后某神举例

var name = "The Window";   
  var object = {  
    name : "My Object",  
    getNameFunc : function(){  
        return this.name;  
    }   
};  
var a = object.getNameFunc;
alert(a());//The Window
alert(object.getNameFunc());  //My Object

最后某神解释

因为a()实际上是window.a()
所以执行a()的时候this指向window
this.name就是window.name

object.getName = object.getName;
alert(object.getName());  //My Object
alert((object.getName = object.getName)());//"The Window" 
还是不明白 为啥第一个是obj 第二个是window

这个解释怎么理解啊

最后他明白了

某渣:我大概明白了 执行

alert((object.getName = object.getName)); 返回
 function () {
                return this.name;
            }
这里this 就是window了

额,对的
 
某渣:是吧
 
就是这
 
某渣:就是一对()返回一个函数
(object.getName = object.getName)返回的实际上是=运算的结果
某渣:多谢大家
 
 

圆满解决

某神总结

当一个函数作为函数而不是方法来调用的时候,this指向的是全局对象
当函数作为某个对象的方法来调用时,this指向那个对象

object.getNameFunc() ,此时的 object.getNameFunc 为引用类型,其 base 为 object,this 指向的是 base,所以返回 object.name 的值

name = object.getNameFunc, test 作为标识符,生成了其他引用类型的值,此时 base 已经从 object 重置为 null,也就是会指向 global(window),所以返回的是 window.name 的值。

问题的关键在于「引用类型(type Reference)的中间值发生改变」

javascript有关this的那些事(某渣提出的问题)的更多相关文章

  1. JavaScript模块化开发的那些事

    模块化开发在编程开发中是一个非常重要的概念,一个优秀的模块化项目的后期维护成本可以大大降低.本文主要介绍了JavaScript模块化开发的那些事,文中通过一个小故事比较直观地阐述了模块化开发的过程. ...

  2. JavaScript中继承的那些事

    引言 JS是一门面向对象的语言,但是在JS中没有引入类的概念,之前特别疑惑在JS中继承的机制到底是怎样的,一直学了JS的继承这块后才恍然大悟,遂记之. 假如现在有一个“人类”的构造函数: functi ...

  3. 关于javaScript事件委托的那些事

    今天是第一次写稿,还是有那么一丢丢小鸡冻...回归正题啦... 关于javaScript事件委托不得不说的那些事,为什么要使用事件委托? 我们可以这么说,假设老板要分配一项任务,首先要秘书叫A君来到办 ...

  4. 学javascript必须要知道的事

    第一:变量声明 在使用javascript时使用变量时首先做的是声明变量,变量声明的关键字是var. 例子: var i; var sum; 也可以多个变量声明: var i,sum; 还可以在声明时 ...

  5. (转载)JavaScript中面向对象那点事

    鉴于自己在JavaScript这方面比较薄弱,所以就找了一本书恶补了一下(被称为犀利书的JavaScript权威指南).书的内容虽然多了点,但这也充分说明了js中的东西还是挺多的.虽然我们的定位不是前 ...

  6. 初学JavaScript须知道的七件事

    1.1.缩略标记 //定义对象 //var car = new Object(); //car.colour = 'red'; //car.wheels = 4; //car.hubcaps = 's ...

  7. 关于Javascript你可能不知道的事

    NaN表示一个不能产生正常结果的运算结果.它不等于任何值,包括它自己.可以用isNaN(number)来检测. 同Java中的字符串一样,JS中的字符串是不可变的.也就是说一旦字符串被创建,就无法改变 ...

  8. JavaScript中面向对象那点事

    鉴于自己在JavaScript这方面比較薄弱.所以就找了一本书恶补了一下(被称为犀利书的JavaScript权威指南).书的内容尽管多了点,但这也充分说明了js中的东西还是挺多的.尽管我们的定位不是前 ...

  9. javascript的原型链那些事

    如果你对javascript的原型链还有任何疑问,请看这篇文章 进入主题 前言 原型链的规则不百分百适用于所有情况 显式原型:prototype,是一个对象{} 隐式原型:__proto__,是一个对 ...

随机推荐

  1. 这可能是最详细的Python文件操作

    删除 # ==================删除==================# 只能删除文件,若为目录则报错# 若文件正在使用,Windows下会直接报错,Linux下会在目录表中删除记录, ...

  2. 在Windows上安装配置Git

    用安装 https://git-scm.com/ 官网下载安装包 (官网有安装步骤 https://git-scm.com/book/zh/v1/%E8%B5%B7%E6%AD%A5-%E5%AE%8 ...

  3. 【转载】kafka 基础知识

    1.       kafka介绍 1.1.       主要功能 根据官网的介绍,ApacheKafka®是一个分布式流媒体平台,它主要有3种功能: 1:It lets you publish and ...

  4. QUIC和TCP

    作者:henrystark henrystark@126.com Blog: http://henrystark.blog.chinaunix.net/ 日期:20140626 本文遵循CC协议:署名 ...

  5. [Hanani]JAVA大数相关学习记录

    1.Basic remains 题目链接 涉及内容: |大数读入|大数模|大数进制读入时转化为十进制|大数输出时转化为其他进制输出| import java.io.*; import java.mat ...

  6. Arcengine效率探究之二——属性的更新(转载)

    http://blog.csdn.net/lk103852503/article/details/6570748 修改一批要素的属性有多种方法,当数据量较大时,若选择不当可能会大大影响速度. 一.IR ...

  7. Selenium--调用js,对话框处理 (python)

    前言: 本次教程针对Python语言,selenium教程(调用js,对话框处理) 一.对话框处理 更多的时候我们在实际的应用中碰到的并不是简单警告框,而是提供更多功能的会话框. 本节重点: 1.打开 ...

  8. C++:继承访问属性(public/protected/private)

    • 公有继承(public) 公有继承在C++中是最常用的一种继承方式,我们先来看一个示例: #include<iostream> using namespace std; class F ...

  9. gym101350 c h m

    C. Cheap Kangaroo time limit per test 1.0 s memory limit per test 256 MB input standard input output ...

  10. 【题解】 [HNOI2015]菜肴制作 (拓扑排序)

    题目描述 知名美食家小 A被邀请至ATM 大酒店,为其品评菜肴. ATM 酒店为小 A 准备了 N 道菜肴,酒店按照为菜肴预估的质量从高到低给予1到N的顺序编号,预估质量最高的菜肴编号为1. 由于菜肴 ...