1. this 指向

函数执行方式 this指向
1.直接圆括号 window
2.对象调用 对象
3.事件触发 触发对象
4.定时器运行 window (常常定义变量存储this以达到this指向特定对象)
5.作为数组对象的某个元素 该数组对象

调用一个函数将暂停当前函数的执行,
传递控制权和参数给新函数,
除此之外,每个函数接收两个附加的参数:this 和 arguments。
this的值取决于调用的模式。

2. 调用方式

js中的四种调用模式: 方法调用模式 函数调用模式 构造器调用模式 apply 调用模式。

方法调用模式:
方法,当一个函数被保存为对象的一个属性时,称此函数为一个方法。
当一个方法被调用时,this被绑定到该对象,
如果一个调用表达式包含一个属性存取表达式(即 . 表达式 或者 [funName]表达式),
那么它被当作一个方法来调用。
通过 this 可取得它所属对象的上下文的方法 称为公共方法。

函数调用模式:
当一个函数并非一个对象的属性时,那么它被当作一个函数来调用。
函数调用模式下,this被绑定到全局对象。(
语言设计上的失误,
若设计正确,当内部函数被调用时, this 应该仍然绑定到外部函数
的 this 变量。解决方案:var that = this ;即缓存当前对象。

构造器调用模式
在一个函数前面带上 new 来调用,
将创建一个隐藏连接到该函数的 prototype 成员的新对象,
同时 this 也会被绑定到那个新对象上。
简而言之,结合 new 前缀调用的函数称为构造器函数(通常首字母大写)

apply调用模式(call)
js是一个 函数式的 面向对象的 编程语言,
所以函数可以拥有方法,可以有 apply 方法。
apply方法原理是劫持一个函数的属性和方法,加之在一个拥有arr参数的相同环境使用
(变相继承、扩展参数)

语言设计上的失误,
arguments 并不是一个真正的数值,有 length 属性,可通过下标获取对应元素,
但,它缺少所有数组方法。

this 指向 及 调用方式的更多相关文章

  1. (三)我的JavaScript系列:不同调用方式的this指向

    人生自是有情痴,此恨不关风与月 今天所写的内容,是对之前的内容的总结和扩展.老实说,对于自己之前的一些杜撰和臆测,我并不是很满意.所以这篇博文,我希望能来点干货. 不同调用方式的this指向 在Jav ...

  2. JS的一些总结(函数声明和函数表达式的区别,函数中的this指向的问题,函数不同的调用方式,函数也是对象,数组中的函数调用)

    一.函数声明和函数表达式的区别: 函数声明放在if——else语句中,在IE8中会出现问题 函数表达式则不会 <script> if(true){ function f1(){ conso ...

  3. JS高级---函数中的this的指向,函数的不同调用方式

    函数中的this的指向 普通函数中的this是谁?-----window 对象.方法中的this是谁?----当前的实例对象 定时器方法中的this是谁?----window 构造函数中的this是谁 ...

  4. 函数的不同调用方式决定了this的指向不同

    一.函数的不同调用方式决定了this的指向不同,一般指向调用者 1.普通函数   this指向window的调用者        function fn(){            console.l ...

  5. Python模块调用方式详解

    Python模块调用方式详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其 ...

  6. libcurl 接口调用方式

    http://hi.baidu.com/tracyu1026/item/bb6d5def4292b10b570f1d48 libcurl提供了一组C语言API函数直接调用.首先需要提到的两个函数就是c ...

  7. 浅谈js函数三种定义方式 & 四种调用方式 & 调用顺序

    在Javascript定义一个函数一般有如下三种方式: 函数关键字(function)语句: function fnMethodName(x){alert(x);} 函数字面量(Function Li ...

  8. C++中构造函数的手动和自动调用方式

    1,对象的构造通过构造函数来完成,和类名相同且没有返回值,这个时候只有参   数一个特性,构造函数可以自定义参数,这个参数一般而言就是对类进行初始  化来使用的:带有参数的构造函数的意义在于可以使得每 ...

  9. 【转】java通用URL接口地址调用方式GET和POST方式

    java通用URL接口地址调用方式GET和POST方式,包括建立请求和设置请求头部信息等等......... import java.io.ByteArrayOutputStream; import ...

随机推荐

  1. Python3 实现 JS 中 RSA 加密的 NoPadding 模式

    前因后果之哗啦啦废话连篇: 这几天本人在 Python 做某网站登陆的时候,发现其登陆时用户名和密码被加密了 F12 仔细看了一下,发现是调用了一个 js 的 rsa 加密库,页面 dom 中有 rs ...

  2. django 把函数装饰器变为方法装饰器

    暗暗啊

  3. NGINX转发代理情况下,获取客户单真实IP

    编译时加上http_realip_module 模块 realip模块生效的前提是:直接连接nginx的ip是在set_real_ip_from中指定的. 原机配置: set_real_ip_from ...

  4. logstash 5.1.1 学习

    Logstash 5.1.1 安装配置 安装和配置 java 环境: [root@ ~]# tar xf jdk-8u71-linux-x64.tar.gz [root@ ~]# mv jdk1.8. ...

  5. FFMPEG编译参数解析

    Standard options: 基本选项参数 --help 显示此帮助信息|print this message --log[=FILE|yes|no] 记录测试并输出到config.err文件| ...

  6. linux上的文件服务

    主要的文件服务vsftp.Samba.NFS对比 服务器名称 用户客户端平台 使用范围 服务端口 VSFTP Windows/linux/unix/macOS等 发布网站,文件共享 Tcp/21 Sa ...

  7. js通过 URL下载文件

    页面上一个button,点击之后触发一个function去请求数据,返回 pdf/epub 的URL,然后下载这个文件. 本来是直接用 a 写的,href里放资源地址,target设为'_blank' ...

  8. AnswerOpenCV(0826-0901)一周佳作欣赏

    1.OpenCV to detect how missing tooth in equipment Hello everyone. I am just starting with OpenCV and ...

  9. Codeforces Round #483 (Div. 2)题解

    A. Game time limit per test 2 seconds memory limit per test 256 megabytes input standard input outpu ...

  10. 【Python31--pickle函数】

    一.含义 1.pickle的实质是什么 答:利用一些算法把数据对象转换成“二进制文件”,存储在硬盘上,当然也可以放在数据库或者是另外一台计算机上 2.存放:picking,读取:unpicking 3 ...