函数内部的函数中的this都是指向window

刚看到一个问题关于this的,

1   var name="the window";
2     var object={
3         name:"silence",
4         packname:function(){
5             return this.name;
6         }
7     }
8     console.log(object.packname());

一般而言,在Javascript中,this指向函数执行时的当前对象。这个this指object。输出结果为 silence

改变一下

1 var name="the window";
2     var object={
3         name:"silence",
4         packname:function(){
5             return this.name;
6         }
7     }
8     var show=object.packname;
9     console.log(show());

当没有明确的执行时的当前对象时,this指向全局对象window。

这里show=object.packname;show();这里show没有明确的指明执行对象,所以等同于 window.show();结果是 the window

再改一下

 1   var name="the window";
 2     var silence={
 3         name:"silence",
 4         packname:function(){
 5             return this.name;
 6         }
 7     }
 8     var seraph={
 9         name:"seraph",
10         packname:function(){
11             var fun=silence.packname;
12             return fun();
13         }
14     }
15     console.log(seraph.packname());

与2类似,fun();得到the window,fun()可以看出函数内部的函数指向window。我是这样理解的。

时间: 2024-10-24 16:12:00

函数内部的函数中的this都是指向window的相关文章

setTimeout中所执行函数中的this,永远指向window

注意是要延迟执行的函数中的this哦!! //片段一 setTimeout("alert(this)", 1); // [object Window] //片段二 var obj = { say: function() { setTimeout("alert('in obj ' + this)", 0) } } obj.say(); //片段三 var obj = { say: function() { setTimeout(function(){alert(thi

C#在函数内部获取函数的参数

foreach (var parameter in typeof(类名).GetMethod("方法名").GetParameters()) { Console.WriteLine(parameter.ParameterType);//参数类型 Console.WriteLine(parameter.Position);//参数位置 Console.WriteLine(parameter.Name);//参数名 }

node.js中的匿名函数, 回调函数和嵌套函数

定义一个函数相信大家已经很熟悉了, 在javascript里的函数也是非常重要的, 使用率非常高, 有几种函数不是很好理解 一, 匿名函数 var remove = function(num1) { return num1; } var fun = remove(5); console.log(fun); 这里定义的这个函数没有设置函数名, 在使用的时候要使用变量调用这个函数. 最后的输出结果: 5 二, 回调函数, 传递的参数可以定义成任意的对象, 而在这里, 其中的一个参数就是一个函数 fu

JavaScript笔记- 函数声明和函数表达式(001)

function 是 Javascript 中的第一类对象,这就意味着函数可以像其他值一样被传递.一个最常见的用法就是将一个匿名函数作为回调函数传递到另外一个异步函数中. 函数声明 ? 1 function foo() {} 函数 foo 将会在整个程序执行前被 hoist (提升),因此它在定义 foo 函数的整个 scope (作用域)中都是可用的.即使在函数定义之前调用它也没问题. 1 2 foo(); // Works because foo was created before thi

函数:(函数的名字,闭包)

函数名本质上就是函数的内存地址 1.可以被引用 def func(): print('in func') f = func print(f) 输出: <function func at 0x0000029C11C93E18> 2.可以被当作容器类型的元素 def f1(): print('f1') def f2(): print('f2') def f3(): print('f3') l = [f1,f2,f3] d = {'f1':f1,'f2':f2,'f3':f3} #调用 l[0]()

python自动化--函数(闭包函数和装饰器)

闭包函数 闭包函数定义,定义在函数内部的函数,特点是:包含对外部作用域而不是对全局作用域名字的引用.该函数就称之为闭包函数. 简单装饰器实现 1,为什么要使用装饰器,开放封闭原则,对扩展是开放的,对修改是封闭的 2,什么是装饰器 用来装饰他人,装饰器本身可以是任意可调用对象,被装饰器的对象也可以是任意可调用对象 遵循的原则,1,不修改被装饰对象的源代码 2,不修改被装饰器对象的调用方式. 目标是: 在遵循原则1和2的前提,为被装饰器对象添加上新的功能. 原文地址:https://www.cnbl

011实现一个栈,除了push和pop操作,还要实现min函数以返回栈中的最小值,时间复杂度都为O(1)(keep it up)

实现一个栈,除了push和pop操作,还要实现min函数以返回栈中的最小值. push,pop和min函数的时间复杂度都为O(1). 看到这个题目最直接的反应是用一个变量来保存当前栈的最小值,让我们来看看这样可行否? 如果栈一直push那是没有问题,入栈元素如果比当前最小值还小,那就更新当前最小值. 可是如果pop掉的栈顶元素就是最小值,那么我们如何更新最小值呢?显然不太好办. 既然只用一个变量没法解决这个问题,那我们就增加变量.如果说每个结点除了保存当前的 值, 另外再保存一个从该结点到栈底的

基类中定义的虚函数在派生类中重新定义时,其函数原型,包括返回类型、函数名、参数个数、参数类型及参数的先后顺序,都必须与基类中的原型完全相同 but------&gt; 可以返回派生类对象的引用或指针

您查询的关键词是:c++primer习题15.25 以下是该网页在北京时间 2016年07月15日 02:57:08 的快照: 如果打开速度慢,可以尝试快速版:如果想更新或删除快照,可以投诉快照. 百度和网页 http://bbs.csdn.net/topics/380238133 的作者无关,不对其内容负责.百度快照谨为网络故障时之索引,不代表被搜索网站的即时页面. 首页 精选版块 移动开发 iOS Android Qt WP 云计算 IaaS Pass/SaaS 分布式计算/Hadoop J

C++中常函数内部的this指针也是const类型的

代码中碰到一个奇怪的现象,在同样的函数中调用this指针,结果却有一个无法通过编译 1 // 读取连接信息 2 void ThirdWizardPage::ReadConnection() 3 { 4 QFile file("oracle.passwd"); 5 if(!file.open(QIODevice::ReadOnly)) 6 { 7 QMessageBox::information(this, tr("打开文件失败"), 8 tr("错误原因: