运行程序,解读this指向---case3
片段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的更多相关文章
- 操作系统篇-hello world(免系统运行程序)
|| 版权声明:本文为博主原创文章,未经博主允许不得转载. 一.前言 今天起开始分享关于操作系统的相关知识,本人也是菜鸟一个,正处于学习阶段,这整个操作系统篇也是我边学习边总结的一些结果,希 ...
- windows服务编写和“以管理员运行”程序的方法
本文将首先解释如何 创建 一个定期查询可用物理内存并将结果写入某个文本文件的服务.然后指导你完成生成,安装和实现服务的整个过程. 第一步:主函数和全局定义 首先,包含所需的头文件.例子要调用 Win3 ...
- python介绍,计算机核心基础,与运行程序有关的三大核心硬件,操作系统
python介绍,计算机核心基础,与运行程序有关的三大核心硬件,操作系统 引子 python是什么? 什么是编程语言?为何要有编程语言? 什么是编程?什么是程序?什么是进程?为何要编程? 计算机基础 ...
- CYPEESS USB3.0程序解读之---GPIO
CPRESS 官方给出的SDK1.1中(目前最新的SDK),提供了大量的例程供我们开发软件的时候作参考,就像STM32的开发一样提供了库一样,但是又不是库,仅仅是参考例程. 首先看一个简单一点的GPI ...
- Xcode 运行程序,左侧memory 不显示内存
运行程序后,xcode 不显示当前使用的内存情况,问题是打开了僵尸--enable zoombie Objects,关闭即可 打开 product--->SCheme-->EditSChe ...
- C# 管理员身份运行程序
在使用winform程序获取调用cmd命令提示符时,如果是win7以上的操作系统,会需要必须以管理员身份运行才会执行成功,否则无效果或提示错误. 比如在通过winform程序执行cmd命令时,某些情况 ...
- IntelliJ IDEA 配置运行程序
IntelliJ IDEA 对于Javaer开发来说还是很nice的,就是第一次用可能配置项有点生疏,这里就记录一下IntelliJ IDEA 配置运行程序. 1. 点击Edit Config... ...
- Usage: AddDimensionedImage imageFile outputFile eclipse 运行程序出错
关于这个在eclipse中运行java程序的错,首先确认你的jdk,jre是否完整,并且与你的eclipse的位数相同,当然我相信这个错误大家应该都会去检查到. 第二个关于addDimensioned ...
- [原创]Win7、Win8、Win10始终以管理员身份运行程序。
在Win7.Win8.Win10系统中,以管理员身份运行程序很麻烦,一般有以下几种方式: 1.在可执行程序或快捷方式上右键,以管理员身份运行: 2.在可执行程序或快捷方式上右键->属性-> ...
随机推荐
- SpringBoot三种配置Dubbo的方式
*必须首先导入dubbo-starter (1).使用SpringBoot配置文件(application.properties或application.yml) dubbo.application. ...
- Linux下函数调用堆栈帧的详细解释【转】
转自:http://blog.chinaunix.net/uid-30339363-id-5116170.html 原文地址:Linux下函数调用堆栈帧的详细解释 作者:cssjtuer http:/ ...
- /etc/fstab文件详解【转】
******************************************************************************* 有很多人经常修改/etc/fstab文件 ...
- jvm系列二、JVM内存结构
原文链接:http://www.cnblogs.com/ityouknow/p/5610232.html 所有的Java开发人员可能会遇到这样的困惑?我该为堆内存设置多大空间呢?OutOfMemory ...
- dubbo系列三、架构介绍及各模块关系
一.整体设计 图例说明: 图中左边淡蓝背景的为服务消费方使用的接口,右边淡绿色背景的为服务提供方使用的接口,位于中轴线上的为双方都用到的接口. 图中从下至上分为十层,各层均为单向依赖,右边的黑色箭头代 ...
- eclipse设置代码模板和格式
该设置可以在保存文件时自动根据模板调整代码格式. 首先准备华为代码格式化文件: FEFO-Formatter.xml FEFO-codetemplates.xml 设置格式Preferences-Ja ...
- rabbitmq 源码安装
官网地址:rabbitmqhttp://www.rabbitmq.com/releases/rabbitmq-server/官网地址:erlanghttp://erlang.org/download/ ...
- python抓取bing主页背景图片
最初Python2写法: #!/usr/bin/env python # -*- coding:utf-8 -*- # -*- author:nancy -*- # python2抓取bing主页所有 ...
- js字符串截取为数组
var str="hello,word,java,eclipse,jsp"; //字符串截取为数组 var strArr=str.split(","); for ...
- java lambda 的用法
一.打印数组 String[] s = "fdsfsdfds".split(""); Stream<String> str = Stream.of( ...