内容简介:一个函数中this的指向是由调用这个函数的环境来决定的。
概述
一个函数中this的指向是由调用这个函数的环境来决定的。
-
全局
var a = 1; function b(){ var a = 2; console.log(this.a); }; b(); //1
<input type="text" value="4" onclick="b()" /> var value = 3; function b(){ console.log(this.value); }; b();//3 此时的b函数的环境是全局的
-
局部
var a = 1; var c = {a:3}; c.b = function(){ var a = 2; console.log(this.a); }; c.b();//3 //立即执行函数 由于是赋值,所以只执行了右边的函数 var a = 1; var c = {a:3}; (c.b = function(){ var a = 2; console.log(this.a); })();//1
apply、call 和 bind 改变this指向
-
apply
-
参数
只能传两个参数 ,第一个参数a是 改变this指向的结果对象(在非严格模式下,第一个参数为null或者undefined时会自动替换为指向全局对象) ,第二个参数是传给a的 参数集合(arguments[数组或类数组]) ;
-
实例
var a = 1; var c = {a : 3}; function b(d,e){ var a = 2; console.log(this.a); console.log(d,e); }; b.apply(c);//3 undefined undefined b.apply();//1 undefined undefined b.apply(c,[5,6]);// 3 5 6
-
-
call
-
参数
第一个参数和apply()的第一个参数一样,不同的是apply()后面是接收一个数组或类数组,call()后面是是接收的参数列表。
-
实例
var a = 1; var c = {a : 3}; function b(d,e){ var a = 2; console.log(this.a); console.log(d,e); }; b.call(c);//3 undefined undefined b.call();//1 undefined undefined b.call(c,5,6);// 3 5 6
-
-
bind
-
参数
参数和call一样,不同的是 call()和apply()在调用函数之后会立即执行,而bind()方法调用并改变函数运行时上下文后,返回一个新的函数,供我们需要时再调用。
-
实例
var a = 1; var c = {a : 3}; function b(d,e){ var a = 2; console.log(this.a); console.log(d,e); }; var b1 = b.bind(c); var b2 =b.bind(); var b3 =b.bind(c,5,6); b1();//3 undefined undefined b2();//1 undefined undefined b3()// 3 5 6
-
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
数据挖掘导论
(美)Pang-Ning Tan、Michael Steinbach、Vipin Kumar / 机械工业出版社 / 2010-9 / 59.00元
本书全面介绍了数据挖掘的理论和方法,着重介绍如何用数据挖掘知识解决各种实际问题,涉及学科领域众多,适用面广。 书中涵盖5个主题:数据、分类、关联分析、聚类和异常检测。除异常检测外,每个主题都包含两章:前面一章讲述基本概念、代表性算法和评估技术,后面一章较深入地讨论高级概念和算法。目的是使读者在透彻地理解数据挖掘基础的同时,还能了解更多重要的高级主题。 本书特色 ·包含大量的图表、......一起来看看 《数据挖掘导论》 这本书的介绍吧!