AngularJS的this详解

时间:2021-02-01 03:11:02

【this详解】
        
          1、谁最终调用函数,this指向谁。
             ① this指向的,永远只可能是对象!!!!!!
             ② this指向谁,永远不取决于this写在哪!!而是取决于函数在哪调用。
             ③ this指向的对象,我们称之为函数的上下文context,也叫函数的调用者
         
          2、※※※※※this指向的规律(与函数调用的方式息息相关):
             this指向的情况,取决于函数调用的方式有哪些:
             ① 通过函数名()直接调用:this指向window
             ② 通过对象.函数名()调用的:this指向这个对象
             ③ 函数作为数组的一个元素,通过数组下标调用的:this指向这个数组
             ④ 函数作为window内置函数的回调函数调用:this指向window
              setInterval  setTimeout 等...
             ⑤ 函数作为构造函数,用new关键字调用时:this指向新new出的对象

function func(){
            console.log(this);
        }
        
        ① 通过函数名()直接调用:this指向window
        func(); this--->window
        
        ② 通过对象.函数名()调用的:this指向这个对象
             狭义对象
            var obj = {
                name:"obj",
                func1 :func
            };
            obj.func1();  this--->obj
            
             广义对象
            document.getElementById("div").onclick = function(){
                this.style.backgroundColor = "red";
            };  this--->div
        
        ③ 函数作为数组的一个元素,通过数组下标调用的:this指向这个数组
        var arr = [func,1,2,3];
        arr[0]();   this--->arr
        
        ④ 函数作为window内置函数的回调函数调用:this指向window
        setTimeout(func,1000);// this--->window
        setInterval(func,1000);
        
        ⑤ 函数作为构造函数,用new关键字调用时:this指向新new出的对象
        var obj = new func(); //this--->new出的新obj

AngularJS的this详解的更多相关文章

  1. AngularJS模块的详解

    AngularJS模块的详解 在讲angularjs的模块之前,我们先介绍一下angular的一些知识点: AngularJS是纯客户端技术,完全用Javascript编写的.它使用的是网页开发的常规 ...

  2. AngularJs ng-route路由详解

    本篇基于ng-route来讲下路由的使用...其实主要是 $routeProvider 搭配 ng-view 实现. ng-view的实现原理,基本就是根据路由的切换,动态编译html模板. 更多内容 ...

  3. AngularJS执行流程详解

    一.启动阶段 大家应该都知道,当浏览器加载一个HTML页面时,它会将HMTL页面先解析成DOM树,然后逐个加载DOM树中的每一个元素节点.我们可以把AngularJS当做一个类似jQuery的js库, ...

  4. AngularJs自定义指令详解(9) - terminal

    例子: <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8 ...

  5. AngularJs自定义指令详解(8) - priority

    priority 默认值为0. 当一个元素上声明两个指令,而且它们的priority一样,谁先被调用?这个需要分情况讲.下面先给个例子: <!DOCTYPE html> <html& ...

  6. AngularJs自定义指令详解(7) - multiElement

    multiElement不太常用,从下面这个例子可以大致看出它的作用: <!DOCTYPE html> <html> <head lang="en"& ...

  7. AngularJs自定义指令详解(6) - controller、require

    在前面文章中提到一旦声明了require,则链接函数具有第四个参数:controller. 可见require和controller是配合使用的. 在自定义指令中使用controller,目的往往是要 ...

  8. AngularJs自定义指令详解(5) - link

    在指令中操作DOM,我们需要link参数,这参数要求声明一个函数,称之为链接函数. 写法: link: function(scope, element, attrs) { // 在这里操作DOM} 如 ...

  9. AngularJS指令的详解

    指令作为AngularJS中最为重要的部分,所以这个框架本身也是自带了比较多的的指令,但是在开发中,这些指令通常不能满足我们的需要,所以我们也是需要自定义一些指令的.指令是我们用来扩展浏览器能力的技术 ...

随机推荐

  1. How to accept Track changes in Microsoft Word 2010&quest;

    "Track changes" is wonderful and remarkable tool of Microsoft Word 2010. The feature allow ...

  2. Y2错题解析

    数据流程图描述信息的来龙去脉和实际流程,反映信息在系统中流动.处理和存储的情况.程序结构图用来描述程序结构,一般由构成系统的要素和表达要素间关系的连线或箭头构成.因果图是一种发现问题"根本原 ...

  3. Qt自定义带游标的slider,在滑块正上方显示当前值(非常有意思,继承QSlider之后增加一个QLabel,然后不断移动它)

    首先自定义QSlider的子类MyCustomSlider,如下所示. mycustomslider.h #ifndef MYCUSTOMSLIDER_H #define MYCUSTOMSLIDER ...

  4. Go实现海量日志收集系统&lpar;三&rpar;

    再次整理了一下这个日志收集系统的框,如下图 这次要实现的代码的整体逻辑为: 完整代码地址为: https://github.com/pythonsite/logagent etcd介绍 高可用的分布式 ...

  5. 判断系统是64位还是32位的bat方法

    if "%PROCESSOR_ARCHITECTURE%"=="x86" goto x86 if "%PROCESSOR_ARCHITECTURE%& ...

  6. 利用OpenVPN实现局域网内多台机器共享上网

    本文转载自 https://www.digitalocean.com/community/tutorials/how-to-set-up-an-openvpn-server-on-ubuntu-14- ...

  7. SqlServer -- char varchar、nchar、nvarchar

    一.char与varchar 列如: char(10) varchar(10) 写入“abc”char 损耗了硬盘10字节 = “abc”长度 + 7个空字符varchar损耗了硬盘3字节 = “ab ...

  8. malloc 函数详解【转】

    转自:https://www.cnblogs.com/Commence/p/5785912.html 很多学过C的人对malloc都不是很了解,知道使用malloc要加头文件,知道malloc是分配一 ...

  9. 尚硅谷【SpringBoot】web&lpar;源码讲解太多不建议阅读&rpar;

    四.Web开发 1.简介 使用SpringBoot: 1).创建SpringBoot应用,选中我们需要的模块: 2).SpringBoot已经默认将这些场景配置好了,只需要在配置文件中指定少量配置就可 ...

  10. How To Move a MySQL Data Directory to a New Location on Ubuntu 16&period;04

    16 How To Move a MySQL Data Directory to a New Location on Ubuntu 16.04 PostedJuly 21, 2016 62.1kvie ...