彻底理解this,需要彻底理解函数

  • 函数是复杂类型,存储在堆中. 

  • 函数是独立的, 对象中的方法只是对象中有个函数的引用

  • 函数被调用时,调用者会像被调用者提供个上下文环境, 这个环境就是this

  • 构造函数稍微有点特殊,它绑定了上下文,添加了原型,调用了方法

"use strict";
var name = "hello";
var obj = {
  name:"wanhong",
  getName:function(){
    console.log(this.name);
  }
} // 默认调用
obj.getName(); // wanhong // 引用调用
var fun = obj.getName;
fun(); // 应用apply改变context
var scope = {name:"world"};
fun.apply(scope); // world // 构造函数自带context
function People() {
  this.name='wanhong';
}
var p = new People();
//构造的过程差不多如下
// var scope = {name:"wanhong"};
// scope.__proto__ = People.prototype;
// scope.constructor = People;
// People.apply(scope);
// return scope;

javascript之彻底理解this的更多相关文章

  1. javascript单例模式的理解

    javascript单例模式的理解 阅读目录 理解单例模式 使用代理实现单例模式 理解惰性单例 编写通用的惰性单例 单例模式使用场景 回到顶部 理解单例模式 单例模式的含义是: 保证一个类只有一个实例 ...

  2. JavaScript面向对象的理解

    JavaScript面向对象的理解  笔记链接: http://pan.baidu.com/s/1c0hivuS 1:JavaScript 中分两种对象,函数对象和普通对象new Function() ...

  3. javascript javascript面向对象的理解及简单的示例

    javascript面向对象的理解及简单的示例 零.本节重点: 1.封装: 2.继承: 壹.下面理解: 一. javascript面向对象概念: 为了说明 JavaScript 是一门彻底的面向对象的 ...

  4. javaScript深入浅出之理解闭包

    javaScript深入浅出之理解闭包 引言 闭包是个老生长谈的话题了,对于闭包网上也有很多不同的看法 <你不知道的javaScript>对于闭包是这么定义的:函数创建和函数执行不在同一个 ...

  5. JavaScript:彻底理解同步、异步和事件循环(Event Loop) (转)

    原文出处:https://segmentfault.com/a/1190000004322358 一. 单线程 我们常说"JavaScript是单线程的". 所谓单线程,是指在JS ...

  6. 通过JavaScript原型链理解基于原型的编程

    零.此文动机 用了一段时间的Lua,用惯了Java C++等有Class关键字的语言,一直对Lua的中的面向对象技术感到费解,一个开源的objectlua更是看了n遍也没理解其中的原理,直到看到了Pr ...

  7. 细心看完这篇文章,刷新对Javascript Prototype的理解

    var person={name:'ninja'}; person.prototype.sayName=function(){ return this.name; } 分析上面这段代码,看看有没有问题 ...

  8. 【JavaScript】深入理解JavaScript之强大的原型和原型链

    由于JavaScript是唯一一个被广泛使用的基于原型继承的语言,所以理解两种继承模式的差异是需要一定时间的,今天我们就来了解一下原型和原型链. AD: hasOwnProperty函数: hasOw ...

  9. 对javascript this的理解

    对于this的理解,大部分时间都比较模糊,最近几天做了一些研究,记录一下 首先应该明白,this是执行上下文的一个属性,它的值取决于执行上下文,执行上下文和函数调用方式相关,定义一个function的 ...

  10. 深入理解JavaScript系列+ 深入理解javascript之执行上下文

    http://www.cnblogs.com/TomXu/archive/2011/12/15/2288411.html http://blog.csdn.net/hi_kevin/article/d ...

随机推荐

  1. 团队展示网页 HTML模版

    之前帮着领导,参加了iGEM的校内赛的网页制作,一开始也是用的现成的模版,但后面修修改改几乎面目全非了- 这里分享一下自己的网站,可以用做团队展示的网页模版,文件在末尾,大家自行下载吧-- 这里贴两张 ...

  2. 有关javaEE及WebGIS的一些地址

    jdk:https://www.oracle.com/index.html eclipse:https://www.eclipse.org spring:http://repo.springsourc ...

  3. # 第五周课下测试(ch03)补交

    第五周课下测试(ch03)补交 1.( 多选题 | 1 分) 有关gdb调试汇编,下面说法正确的是() A . 可以用disas反汇编当前函数 B . 以16进制形式打印%rax中内容的命令是 pri ...

  4. 2017-2018-1 20155318 《信息安全系统设计基础》第2周课堂实践、makefile、以及myod

    2017-2018-1 20155318 <信息安全系统设计基础>第2周课堂实践.makefile.以及myod 测试3-gdb测试 用gcc -g编译vi输入的代码 在main函数中设置 ...

  5. 修改cmd为utf-8编码:

    1.组合键WIN+R键,组合键后就会弹出窗口,然后输入CMD,回车: 2.要修改成UTF8编码,输入命令CHCP 65001(设置为65001): 3.鼠标放在命令窗口的标题部分右键,在弹出的右键菜单 ...

  6. js获取IE版本,while代码很特别

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  7. Drupal8 使用模块的配置文件

    D8中移除了variable表及相关方法 (variable_get(),variable_set()等) .用config表取代了. 新的方法该如何使用? 以D8的Youtube模块为例 配置文件要 ...

  8. 电信NB-IOT的温湿度采集器开发记录

    1. 首先打开浏览器,登录电信商用服务器,上传profile文件 2. 上传编解码插件在,注意的是,上传编解码插件是电信测试用服务器平台(不同的网址),反正不明白电信搞啥幺蛾子,得两个地方去上传 3. ...

  9. Python中的装饰器的使用及固定模式

    装饰器的使用: 在不想修改函数的调用方式,但是想给函数添加内容的功能的时候使用     为什么使用装饰器: 软件实体应该是可扩展,而不可修改的.也就是说,对扩展是开放的,而对修改是封闭的. 因此,引出 ...

  10. Linux的常用命令笔记

    这里使用的是centos操作系统 一.简单命令 (1)查看历史纪录: history (2)查看当前目录: pwd (3)查看系统当前时间和日期 date (4)查看当前登陆到系统的所有用户 who ...