关于this的指向问题及new的过程到底发生了什么

关于这个this的问题,我也是百度了很多,其中不乏有好文章,但是每个人都有自己不懂得那个点在那里,有时候就是感觉get不到关键问题所在,以下是我个人认为最影响我理解的一些地方,可以参考一下。

1. this到底用在什么地方

this是Javascript语言的一个关键字。

它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用

所以,只有函数在调用时,讨论this才是有意义的,谁去用这个函数,因为调用函数的对象写起来太长了,又麻烦,有时候又必须要用这个对象的一些东西,所以我们用一个this去代指它。。

2.与this相关的几种函数运行情况,这部分都是搜的别人的例子

2.1: 最常见的全局性调用

1 function test(){
2     this.x = 1;
3     alert(this.x);
4   }
5   test(); // 1

第五行这里,实际上是window.test();只不过省略了window。因为,我们在function 或者 var 一个函数,变量时,实际上是在开辟window新的属性值,比如var a=1;实际上是widow.a=1;因为调用者是window,所以this自然也是指向window了

时间: 2024-10-05 23:04:07

关于this的指向问题及new的过程到底发生了什么的相关文章

this指向 - Node环境

1.全局上下文中 this /* 1.全局上下文中的 this node环境下: 严格模式下: {} {} 报错 非严格模式下:{} {} {} */ 'use strict'; // 严格模式 // demo 1: console.log(this); // {} // demo 2: var a = this; console.log(a); // {} var b = 1; console.log(global.b); // undefined // demo 3: b = this; /

【转】 c++拷贝构造函数(深拷贝,浅拷贝)详解

c++拷贝构造函数(深拷贝,浅拷贝)详解 2013-11-05 20:30:29 分类: C/C++ 原文地址:http://blog.chinaunix.net/uid-28977986-id-3977861.html 一.什么是拷贝构造函数      首先对于普通类型的对象来说,它们之间的复制是很简单的,例如: int a=100; int b=a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量.  下面看一个类对象拷贝的简单例子. #include<iostream

c++拷贝构造函数(深拷贝,浅拷贝)详解

一.什么是拷贝构造函数      首先对于普通类型的对象来说,它们之间的复制是很简单的,例如: int a=100; int b=a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量.  下面看一个类对象拷贝的简单例子. #include<iostream> using namespace std; class CExample { private: int a; public: //构造函数 CExample(int b) { a=b; printf("con

图解JavaScript中的原型链

转自:http://www.jianshu.com/p/a81692ad5b5d typeof obj 和 obj instanceof Type 在JavaScript中,我们经常用typeof obj和obj instanceof Type来识别类型,那么两者的区别在哪?先来看两段代码 <!--typeof obj的方式判断--> <script>    var str = "toby";    console.log(typeof str);// stri

Objective-C Objective-C中的指针,及对象的直接指向,copy和mutablecopy

1.Objective-C的指针世界 OC一直是人感觉比较变态的一门语言,为什么呢?因为它的每个变量都是指针型,多的都几乎让人忘了那个*的存在了. 所以常常a=b这个等号让我产生错觉,总以为a从b那拷贝了一份. 然而这的的确确,却是个指针.a这个变量存的内容是b所在的地址. 比如我定义了一个Student的Class,new了stu1和stu2,并把stu2=stu1,那当两者任何一个进行修改时,两个变量的内容都会修改. Student *stu1=[[Student alloc]init];

口水话 闭包中this的指向

前言:高程这本书真是神奇,每复习一遍,都会有新的收获.话说我看书有个习惯,要是看得似懂非懂的地方就喜欢打个“?”.这次看到高程第七章“函数表达式”关于闭包与this对象的部分,发现已经积攒了2个问号了.之前过了两遍都没有完全弄明白! 好在如今对this的指向.函数的理解已经今非昔比,这一次终于让我打通这条堵塞的经脉,让他融入我的知识体系了!!想想真是有些小激动呢~~ 目的:一句话,本文就是解释为什么如下两篇代码中this.name的指向不同. var name = "The Window&quo

深入学习 FutureTask

原文出处: 天凉好个秋 第一部分:What 在Java中一般通过继承Thread类或者实现Runnable接口这两种方式来创建多线程,但是这两种方式都有个缺陷,就是不能在执行完成后获取执行的结果,因此Java 1.5之后提供了Callable和Future接口,通过它们就可以在任务执行完毕之后得到任务的执行结果.本文会简要的介绍使用方法,然后会从源代码角度分析下具体的实现原理.本文以Java 1.7的代码进行分析. 第二部分:How Callable接口 对于需要执行的任务需要实现Callabl

Python入门

Python入门教程(个人日常学习记录,有不妥之处欢迎指正!后续更新,敬请期待...) 学习地址:http://www.imooc.com/learn/177 Python中数据类型 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等各种各样的数据,不同的数据,需要定义不同的数据类型.在Python中,能够直接处理的数据类型有以下几种: 一.整数 Python可以处理任意大小的整数,当然包括

linux服务之http协议和httpd的配置(一)

http协议和httpd的配置 URL:Unifrom Resource Locator URL方案:scheme 服务器地址:ip:port 资源路径: http://www.magedu.com:80/bbs/index.php, https:// 基本语法: <scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<fra