js的this指针(转)

因为发现身边的一些朋友对js的this指针的理解不是很全面。下面本人简单的讲解一下js的this指针的相关内容,仅供需要的朋友学习参考。

简单的,我先用一句话来概括javascript的this。在js里面,this指针代表的是执行当前代码的对象的所有者。

下面举几个简单的例子加以说明:

Js的this指针一代码  

  1. var name="jonson";
  2. function test(){alert("您好,我的名字叫"+this.name);}
  3. test();

这段代码很简单,我们定义了一个全局变量name,一个全局的function,最后调用了这个test方法。运行这段代码,会弹出"您好,我的名字叫jonson"。

这里的test方法以及name方法都属于js的最初始的对象window的。简单的说:下面调用test方法的对象就是window。

Js的this实例2代码  

  1. var obj={};
  2. var name="jonson_window";
  3. obj.name="jonson_obj";
  4. obj.test=function (){alert("您好,我的名字是"+this.name)};
  5. obj.test();

运行这段代码,页面弹出"您好,我的名字是jonson_obj",而不是"您好,我的名字是jonson_wondow"。因为最后一句obj.test(),指的是obj对象调用test方法,所以这里的

this.name指的自然就是obj.name的值。

Js的this实例4代码  

  1. function test(){
  2. alert(this.title);
  3. }
  4. <input  type="button" value="test" onclick="test()" id="test" title="test">

运行这段代码页面弹出undefined字样。有人会说,我的input标签里面明明有title属性的值为test的。但是这里为什么会弹出undefined字样呢。其实道理很简单,这里是通过onclick方法调用的。其实onclick="test()",相当于function onclick(evenet){test();},而function onclick其实也是一个全局的function,上面的 test方法也是全局的function,都可以视为window对象的两个属性。这里其实就是通过这个在onclick方法里面调用这个test方法,其实这里和第一种说法是一样的。

通过以上的几个例子,我相信大家都多少理解了js的this指代含义------this指针代表的是执行当前代码的对象的所有者。

js的this指针(转)

时间: 2024-10-25 07:41:10

js的this指针(转)的相关文章

js连续赋值、指针

jq的源码中有很多连续赋值,类似这样的: var a = {n:1}; var b = a; // 持有a,以回查 a.x = a = {n:2}; alert(a.x);// --> undefined alert(b.x);// --> [object Object] 网上有很多解释了,这里我做一下记录而已,化繁为简,比较容易理解的过程是这样的: 给{n:1},{n:2}分别起名个实际持有这两个内存地址的虚拟对象名字,比如:obj1 ->{n:1},obj2->{n:2} 1)

js传函数指针

一个函数可以作为另一个函数的参数. 函数名代表了这个函数的内存地址. 如果想要函数名带参数,可以将调用语句包裹在一个无参数的函数中. 如下所示: //注册单击事件时,要向click里面传一个函数指针. $("#bt1").click(CallWithPara); //再写一个无参函数,将要调用的带有实参的语句包裹在里面. function CallWithPara() { saySth("小苹果."); } //有参的函数 function saySth(sth)

关于JS的This指针

下面讨论一个执行上下文的最后一个属性——this指针的概念. This指针 A this value is a special object which is related with the execution context. Therefore, it may be named as a context object (i.e. an object in which context the execution context is activated). this适合执行的上下文环境息息相

js 数组引用 发现的问题

最近做项目时,要对返回的数据[保存在json数组中]做一次修改,但原数据要保留一次做备用.首先想到,原数据不动,用一个临时的变量来修改,大致模型就是这样: // 原始: a=[1,2,3,4,5,.........]; // 临时: var b = a ; // 操作: b[b.length] = 1 ; 本来觉得是一个很简单的问题.但测试时候发现,并没得到想要的结果.测了很久才找到问题:a数据居然也跟着b的操作一起发生了改变,怎么都想不通.问了同事,貌似他没遇到过,也搞不清楚怎么回事.只好求助

js基础篇(dom操作,字符串,this等)

首先我们来看这样一道题 <div id='foo' class='aa bb cc'></div>写出如何判断此div中是否含有aa(注:aa成立,aaa不成立) 首先,我们一定是取出class里面的这个字符串,然后我们想办法判断出这个字符串里面是否存在aa,并且只有aa. 我给大家提供了三种方法,第一种利用getAttribute方法,第二种利用getElementByClassName,第三种就是正则匹配了. 代码如下: /* ***用getAttribute方法实现 */ v

javascript引用类型指针

看到一个小例子讲了JS的引用指针内容,记录一下: var a = {n:1}; var b = a; a.x = a = {n:2}; console.log(a.x); //undefined console.log(b.x); //[object Object] a.x = a = {n:2}语句的执行顺序? 对{b.x}的输出为何是[object Object]? 分析: var a = {n:1}; //a指向对象{n:1} var b = a; //a与b都指向{n:1} a.x =

快速排序算法原理及其js实现

要说快排的原理,通俗点说就是把一个事情,分成很多小事情来处理,分治的思想. 假设我们现在对"6  1  2 7  9  3  4  5 10  8"这10个数进行排序.首先在这个序列中随便找一个数作为基准数(不要被这个名词吓到了,就是一个用来参照的数,待会你就知道它用来做啥的了).一般选第一个数6作为基准数.接下来,需要将这个序列中所有比基准数大的数放在6的右边,比基准数小的数放在6的左边,类似下面这种排列: 3  1  2 5  4  [6 ] 9 7  10  8 在初始状态下,数

跪在某度秋招Web前端笔试题下

今晚跑去华工参加百度Web前端的笔试,做完之后交卷,本来感觉是“为之四顾,为之踌躇满志”的.其中一道题目是关于数组的,回来在电脑上面一敲,顿时为自己的智商和知识羞愧了. 多话不说,直接上题目吧.大概是酱紫的: 代码如下,请写出输出的结果. 1 <script> 2 var str = 'john'; 3 var str2 = 'angus'; 4 5 var arr1 = str.split(''); 6 var arr2 = arr1.reverse(); 7 var arr = str2.

不用canvas,打造属于自己的个人时钟

这篇主要来帮助大家打造一款属于自己的时钟,没有用到canvas,因为目前我也不会canvas,一直想学,却迟迟没有落实.还是老规矩先上成品图吧!有图有真相 怎么样还不错吧,下面就来告诉大家,如何一步步实现. 首先我们按照如下组织我们的HTML架构 <div class="outer"> <div class="middle"> <div class="inner"></div> </div&g