片段1

var myObj = {
    fullname: "Hou Yi",
    getFullName: function(){
        var self = this;
        console.log('outer:this.fullname is ' + this.fullname);//this.fullname is Hou Yi
        console.log('outer:self.fullname is ' + self.fullname);//self.fullname is Hou Yi
        (function(){
            // 自执行函数的this一般情况下都指向window
            console.log('inner:this.fullname is ' + this.fullname);//this.fullname is undefined
            console.log('inner:self.fullname is ' + self.fullname);//self.fullname is Hou Yi
        })();
    }
};
myObj.getFullName();

片段2

//闭包
var fullname = "Camille Hou";
var myObj = {
    fullname:"Hou Yi",
    getFullName:function(){
        return function(){
            return this.fullname;
        }
    }
}
console.log(myObj.getFullName()());//Camille Hou
var fullname = "Camille Hou";
var myObj = {
    fullname:"Hou Yi",
    getFullName:function(){
        var that = this;
        return function(){
            return that.fullname;
        }
    }
}
console.log(myObj.getFullName()());//Hou Yi

片段3

var fullname = "Camille Hou";
var myObj = {
    fullname:"Hou Yi",
    getFullNameP:{
        fullname:"Gamiye",
        getFullName:function(){
            return this.fullname;
        }
    }
};
//this指向myObj.getFullNameP
/*
如果函数,被某一个对象所拥有,那么该函数在调用时,内部的this指向该对象。
*/
console.log(myObj.getFullNameP.getFullName());//Gamiye

var getName = myObj.getFullNameP.getFullName;
// this指向window,getName被隐式的作为全局对象的属性。
/*
如果函数独立调用,那么该函数在调用时,内部的this指向undefined。但是在非严格模式中,当this指向undefined时,它会被自动指向全局对象。
*/
console.log(getName());//Camille Hou

严格模式

'use strict'
var fullname = "Camille Hou";
var myObj = {
    fullname:"Hou Yi",
    getFullNameP:{
        fullname:"Gamiye",
        getFullName:function(){
            return this.fullname;
        }
    }
};

var getName = myObj.getFullNameP.getFullName;
console.log(getName());//Cannot read property 'fullname' of undefined,此时的this指向undefined

运行程序,解读this指向---case3的更多相关文章

  1. 操作系统篇-hello world(免系统运行程序)

     || 版权声明:本文为博主原创文章,未经博主允许不得转载. 一.前言     今天起开始分享关于操作系统的相关知识,本人也是菜鸟一个,正处于学习阶段,这整个操作系统篇也是我边学习边总结的一些结果,希 ...

  2. windows服务编写和“以管理员运行”程序的方法

    本文将首先解释如何 创建 一个定期查询可用物理内存并将结果写入某个文本文件的服务.然后指导你完成生成,安装和实现服务的整个过程. 第一步:主函数和全局定义 首先,包含所需的头文件.例子要调用 Win3 ...

  3. python介绍,计算机核心基础,与运行程序有关的三大核心硬件,操作系统

    python介绍,计算机核心基础,与运行程序有关的三大核心硬件,操作系统 引子 python是什么? 什么是编程语言?为何要有编程语言? 什么是编程?什么是程序?什么是进程?为何要编程? 计算机基础 ...

  4. CYPEESS USB3.0程序解读之---GPIO

    CPRESS 官方给出的SDK1.1中(目前最新的SDK),提供了大量的例程供我们开发软件的时候作参考,就像STM32的开发一样提供了库一样,但是又不是库,仅仅是参考例程. 首先看一个简单一点的GPI ...

  5. Xcode 运行程序,左侧memory 不显示内存

    运行程序后,xcode 不显示当前使用的内存情况,问题是打开了僵尸--enable zoombie Objects,关闭即可 打开 product--->SCheme-->EditSChe ...

  6. C# 管理员身份运行程序

    在使用winform程序获取调用cmd命令提示符时,如果是win7以上的操作系统,会需要必须以管理员身份运行才会执行成功,否则无效果或提示错误. 比如在通过winform程序执行cmd命令时,某些情况 ...

  7. IntelliJ IDEA 配置运行程序

    IntelliJ IDEA 对于Javaer开发来说还是很nice的,就是第一次用可能配置项有点生疏,这里就记录一下IntelliJ IDEA 配置运行程序. 1. 点击Edit Config... ...

  8. Usage: AddDimensionedImage imageFile outputFile eclipse 运行程序出错

    关于这个在eclipse中运行java程序的错,首先确认你的jdk,jre是否完整,并且与你的eclipse的位数相同,当然我相信这个错误大家应该都会去检查到. 第二个关于addDimensioned ...

  9. [原创]Win7、Win8、Win10始终以管理员身份运行程序。

    在Win7.Win8.Win10系统中,以管理员身份运行程序很麻烦,一般有以下几种方式: 1.在可执行程序或快捷方式上右键,以管理员身份运行: 2.在可执行程序或快捷方式上右键->属性-> ...

随机推荐

  1. 【API】检查进程是否存在 - CreateToolhelp32Snapshot

    1 学习目标 今天静态逆向mydocument病毒时,看到病毒代码为了防止自身被调试会先检测杀毒软件和调试工具的进程是否存在.如果没有杀毒软件则释放真正的病毒文件,提前熟悉一下枚举进程的反汇编代码. ...

  2. 【windows核心编程】系统消息与自定义钩子(Hook)使用

    一.HOOk Hook是程序设计中最为灵活多变的技巧之一,在windows下,Hook有两种含义: 1.系统提供的消息Hook机制 2.自定义的Hook编程技巧 其中,由系统提供的消息钩子机制是由一系 ...

  3. v4l2功能列表大全【转】

    一,功能参考 目录 V4L2 close() - 关闭一个V4L2设备 V4L2 ioctl() - 创建的V4L2设备 ioctl VIDIOC_CROPCAP - 视频裁剪和缩放功能信息 ioct ...

  4. memcmp与strncmp函数【转】

    c中strncmp与memcmp的区别 函数:int memcmp (const void *a1, const void *a2, size_t size)        函数memcmp用于比较字 ...

  5. QML C++插件dll引用

    插件的创建非常简单,但是它可以复用,并且为不同的应用程序扩展类型.使用创建的插件是非常灵活的解决方案.关于插件一个很好的例子见QmlBook-In-Chinese 中最后一章介绍的例子. 本文主要备忘 ...

  6. mysql数据库报错:InnoDB: Operating system error number 13 in a file operation

    环境:centos6.5 x86_64 启动mysql发现日志报错(日志路径可以查看/etc/my.cnf的配置) 160722 10:34:08 [Note] Found 42570716 of 4 ...

  7. CentOs 6.6里kdump启动失败的原因

    在VMware中新安装了CentOs 6.6,重启系统发现kdump服务启动失败 先来说一下,什么是kdump kdump 是一种先进的基于 kexec 的内核崩溃转储机制.当系统崩溃时,kdump ...

  8. Ex 3_25 图中每个顶点有一个相关价格..._十一次作业

    (a)首先对有向无环图进行拓扑排序,再按拓扑排序的逆序依次计算每个顶点的cost值,每个顶点的cost值为自身的price值与相邻顶点间的cost值得最小值 (b)求出图中的每一个强连通分量,并把所有 ...

  9. JS 自己实现Map

    function MyMap() { var items = {}; this.has = function (key) { return key in items; }; this.set = fu ...

  10. 洛谷P4281 紧急会议

    传送门啦 思路: $ Lca $ 这个题要求这个显而易见吧.但是难就难在怎么在树上利用 $ Lca $ 去解决三个点的问题. 首先明确三个点两两的 三个 $ Lca $ 中有一对是相等的,我们也会发现 ...