this 的指向问题】的更多相关文章

引子:在学习CPrimerPlus的第十四章的14.13节中,遇到了如下三行文字,是有关指向函数的指针的,把我搞晕了. char * fump(); //返回指向char的指针的函数 char (* frump)(); //指向返回类型为char的函数的指针 ])(); //由3个指针组成的数组,每个指针指向返回类型为char的函数 原来自己根本都不知道还有指向指针的函数,难怪自己懵逼了.参考了两篇博客(1."http://blog.csdn.net/hzyong_c/article/detai…
正常模式 在正常模式下独立函数的的 this 指向 undefined 或 window. <script type="text/javascript"> function func() { return this.name; } var arg = { name: 'xxx', age: 20, }; r = func(); alert(r); </script> 说明: 这段代码的执行,会弹出没有内容的空白框,func中的this默认的window,但是wi…
父类引用指向子类对象指的是: 例如父类Animal,子类Cat,Dog.其中Animal可以是类也可以是接口,Cat和Dog是继承或实现Animal的子类. Animal animal = new Cat(); 即声明的是父类,实际指向的是子类的一个对象. 那我们从内存角度来理解试试. 假设现在有一个父类Father,它里面的变量需要占用1M内存. 有一个它的子类Son,它里面的变量需要占用0.5M内存. 现在通过代码来看看内存的分配情况: Father f = new Father();//系…
setTimeout的用法详见:http://www.w3school.com.cn/htmldom/met_win_settimeout.asp 是的,setTimeout的常见用法是让某个方法延迟执行.我们知道,setTimeout方法是挂在window对象下的.<JavaScript高级程序设计>第二版中,写到:“超时调用的代码都是在全局作用域中执行的,因此函数中this的值在非严格模式下指向window对象,在严格模式下是undefined”.在这里,我们只讨论非严格模式. setTi…
刚刚学习js的朋友可能和我一样,看到代码中的this总是一脸懵逼,不知道this到底指向谁.经过一段时间的了解,我想跟大家分享下自己的理解. 何时出现this 函数在调用的时候,会自动获得两个特殊变量:this和arguments,所以,函数可以调用this变量. this指向谁? 通过一段时间的练习,我觉得可以总结为一句话:this指向他所在函数的作用域对象.如果函数是定义在全局作用域的,那么this指向window,如果函数被某个自定义对象调用,那么this就指向该对象.下面我们通过几个场景…
Effective C++ 学习笔记 10 让=返回指向*this的引用 Table of Contents 1. 原因 2. 建议:在没有充分理由标新立异前,最好的做法是遵从传统. –by SkyFire 1 原因 在C++中,连锁赋值是合法的,新类型的=操作符应该尽量遵从这一规定(其 实他并不是规定),对于你的类,应该可以这样操作: MyClass a; MyClass b; MyClass c; a=b=c; 2 建议:在没有充分理由标新立异前,最好的做法是遵从传统. Author: Ub…
this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象 这一点与函数中自由变量Action-varibal不同 var object = { name : 'The Kite Runner', obj : { name : 'childProperty', fn : function(x, y){ var result = x + y; console.log('this-context'+this); consol…
首先必须要说的是,this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象(这句话有些问题,后面会解释为什么会有问题,虽然网上大部分的文章都是这样说的,虽然在很多情况下那样去理解不会出什么问题,但是实际上那样理解是不准确的,所以在你理解this的时候会有种琢磨不透的感觉),那么接下来我会深入的探讨这个问题. 为什么要学习this?如果你学过函数式编程,面向对象编程,那你肯定知道干什么用的,如果你没有学过,那么暂时可以不…
前言 接下来我只讲指针的最常见用法,比如这一章的内容----返回指针的函数 与 指向函数的指针   一.返回指针的函数 指针也是C语言中的一种数据类型,因此一个函数的返回值肯定可以是指针类型的. 返回指针的函数的一般形式为:类型名 * 函数名(参数列表) eg: char * upper(参数){} 返回指向char型的指针变量 比如下面这个函数,返回一个指向char类型变量的指针 1 // 需求:将字符串str中的小写字母变成大写字母,并返回改变后的字符串 2 // 注意的是:这里的参数要传字…
首先必须要说的是,this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象(这句话有些问题,后面会解释为什么会有问题,虽然网上大部分的文章都是这样说的,虽然在很多情况下那样去理解不会出什么问题,但是实际上那样理解是不准确的,所以在你理解this的时候会有种琢磨不透的感觉),那么接下来我会深入的探讨这个问题. 为什么要学习this?如果你学过面向对象编程,那你肯定知道干什么用的,如果你没有学过,那么暂时可以不用看这篇文章…
匿名函数中的this指向window对象 这句话很经典: 每个函数在调用时,其活动对象都会自动获取两个特殊的变量:this和arguments.内部函数在搜索这两个变量时,只会搜到其活动对象为止,因此永远不肯能访问到外部函数中的这两个变量.不过,把外部作用域中的this对象保存在一个闭包能够访问的变量里,就可以放闭包访问该对象了. 理解作域链.函数表表达式 var name="The Window"; var object={ name:"My object", g…
this一般指向的是当前被调用者,但也可以通过其它方式来改变它的指向,下面将介绍三种方式: 1.call用作继承时: function Parent(age){ this.name=['mike','jack','smith']; this.age=age; } function Child(age){ Parent.call(this,age);//把this指向Parent,同时还可以传递参数 } var test=new Child(21); console.log(test.age);…
this是谁 技术一般水平有限,有什么错的地方,望大家指正. this代指当前对象super调用父类的构造函数,应表会运网数物,加载驱动建立链接执行SQL处理结果,直到现在每想起这三点就能想起我上大学的时候,故事背景都是不同的有时候是我玩的正high的时候有时候是我快要睡觉,但是结果都是一致的就是让老师教育几句.现在就介绍一下Javascript中的this. 说this的我们一般都说指向,代表,因为它不是固定的,今天是王麻子明天可能就是二狗子,它是谁不能确定,但是有一点是肯定的它永远指向让它起…
[转] 首先必须要说的是,this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象(这句话有些问题,后面会解释为什么会有问题,虽然网上大部分的文章都是这样说的,虽然在很多情况下那样去理解不会出什么问题,但是实际上那样理解是不准确的,所以在你理解this的时候会有种琢磨不透的感觉),那么接下来我会深入的探讨这个问题. 为什么要学习this?如果你学过函数式编程,面向对象编程,那你肯定知道干什么用的,如果你没有学过,那么暂…
JS中, this的值到底是什么? 几个月之前, 拜读了<javascript语言精髓>, 里面对于这个问题, 做出了很好的解释... JS中, this的值取决于调用的模式, 而JS中共有4中调用模式: 1. 方法调用模式 当一个函数被保存为对象的一个属性时, 我们称它为一个方法, 当一个方法被调用时, this指向该对象, 如: var obj = { value: 1, getValue: function() { alert(this.value); } }; obj.getValue…
this的指向: 1.行间调用函数: <div id="div1" onclick="show()"></div> <script> function show(){ alert(this); //object window; } </script>2. 定时器 <div id="div1"></div> <script> var oDiv=document.ge…
成员函数指针与常规指针不同,一个指向成员变量的指针并不指向一个内存位置.通常最清晰的做法是将指向数据成员的指针看作为一个偏移量. class ru_m { public: typedef int (ru_m::*p)(); p get_m(); int show(); }; int ru_m::show(){ return 10000; } ru_m::p ru_m::get_m(){ ru_m::p vc; //错误,当为对象时,对象指向的地址为相对地址,非内存地址 //所以,ru_m->sh…
下午没有任务,闲来无事仿个小网页巩固下基础知识.由于公司安全规定,原网页截图不便上传(也没法上传),回家后做了个简单的菜单以图示: 目标:点击某选项时,该选项底边加粗 1.首先定义click方法,然后在点击元素时调用该方法.('curr'类即红框内底边加粗效果) var liElements = document.getElementsByClassName('headLi'); var addClick = function() { var currElement = document.get…
*this只和执行环境有关,和声明环境无关.谁调用this,this就指向谁. *this的指向分为四种: 1.作为普通函数调用: 2.作为对象的方法调用:   指向对对象,但用新变量引用该方法时候,又变为普通函数调用,指向window: 解释:方法其实就是一个对象中,属性赋了一个函数,而o.getN就代表这个函数,把它赋给一个新变量调用之,变成了普通函数调用. 3.在构造函数中,指向new运算符计算出来的实例对象. 4.apply调用: apply的作用是改变函数的调用对象,它的第一个参数就表…
以前不太理解面向对象的this指向问题,今天自己看着视频教程,加自己学了2个例子,终于明白点了. 我们在写对象程序的时候,我们希望保持this始终是指向对象的,但事实确常常事与愿违. 正常情况this的指向都没问题,比如下面 1 //构造函数 2 function createPerson(name,age){ 3 this.name=name; 4 this.age=age; 5 this.showName(); 6 } 7 //原型方法 8 createPerson.prototype.sh…
学习中,有时遇到event.target,总是不明白为什么要用target,后来学习了下,大概了解了event.target到底指什么元素了,关于event和this的内容,下回再说: 先摆结论:event.target指向事件执行时鼠标所点击(假设是click事件)区域的那个元素.如果事件绑定的元素内部有子元素,那么event.target指向这个子元素,如果没有,event.target指向事件所绑定的元素.看代码: <html> <head> <title>pra…
<button onclick=(function(){alert(this)})()>I'm button</button>//this指代window <button onclick=(function(){alert(this)}).call(this)>I'm button,too</button>//通过call使this指向当前按钮元素 一个例子 <button onclick=(function(){this.innerHTML=this…
在之前写代码的经历中,常常试过写着写着this就莫名其妙的不知道指向到哪里去了.今天看了曾探的javascript设计模式,里面特别谈到了this在不同情况下指代的对象,非常有意思. this指代的情况 this有以下4种情况: 1.对象.函数的形式调用:object.function(); 2.普通函数的形式调用:function(); 3.构造器调用; 4.Function.prototype.call或Function.prototype.apply调用; 1.对象.函数的形式调用 对象.…
this的指向由调用时决定而不是定义时决定,定义的方式: //直接定义在函数里 var a="window中的a"; var name="window"; function aa(args1,args2){ console.log(this.a+args1+args2); } aa(); //this=window //定义在对象中 var o={ a:"o中的aaa", name:"nicole", print:functi…
JS中this的定义:this对象是在运行时基于函数的执行环境绑定的(通俗点来说就是:this代表当前函数属于哪个对象). this一般情况下都代表的是global对象,在浏览器中就是window对象,在一些情况t下his的指向会发生改变,如下5种: 1.对象的字面量表示法中: var a=1 var obj={ a:0; sum:function(  ){ alert( this.a) ;      //this.a=0,   这里的this代表obj对象: return function()…
javascript中,我们预想的this指向,有时候与预期不一样,直接上经典例子 window.name=2; var test={ 'name':1, 'getName':function(){ console.log(this.name);//输出1 return function(){ console.log(this.name);//输出2 } } } test.getName()(); 上面为最经典的一个this指向解析案例,第一个this指向test对象,第二个this指向wind…
前言:高程这本书真是神奇,每复习一遍,都会有新的收获.话说我看书有个习惯,要是看得似懂非懂的地方就喜欢打个“?”.这次看到高程第七章“函数表达式”关于闭包与this对象的部分,发现已经积攒了2个问号了.之前过了两遍都没有完全弄明白! 好在如今对this的指向.函数的理解已经今非昔比,这一次终于让我打通这条堵塞的经脉,让他融入我的知识体系了!!想想真是有些小激动呢~~ 目的:一句话,本文就是解释为什么如下两篇代码中this.name的指向不同. var name = "The Window&quo…
Javascript 中的this 总让人感到困惑,你能分清以下三种test1(),test2(),test3() 情况下的输出吗? 注:以下Javascript运行环境中为浏览器 //1 this在全局函数中使用 var x = 1; function test1() { var  x = 5; alert(this.x); } function _test2() { this.x = 5; alert(this.x); } //2 this 在构造函数中 new 中使用 function t…
看到下面的代码后,一下子懵逼了.这个this指向哪儿去了. jQuery.fn.extend({ check: function() { return this.each(function() { this.checked = true; }); }, uncheck: function() { return this.each(function() { this.checked = false; }); } }); 自身的对象是个匿名的.后来看了http://www.365mini.com/p…
在简单函数中,this是指向当前对象,可用来获取当前对象某个属性,但随着函数变复杂,this很多情况不指向当前对象,而是指向window. 1.在独立调用函数中,具有全局执行环境,this指向window. var name="evan"; function Name(){ this.name="evan2"; 4 console.log(this.name) //evan2 } Name(); console.log(this.name) //evan2 2. 匿…