AngularJS的this详解

【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

时间: 2024-12-28 19:18:36

AngularJS的this详解的相关文章

AngularJS自定义指令详解(有分页插件代码)

前言 除了 AngularJS 内置的指令外,我们还可以创建自定义指令. 通过 .directive() 函数来添加自定义的指令. 调用自定义指令时,需要在HTMl 元素上添加自定义指令名. 自定义指令命名规则:使用驼峰命名法来命名,即除第一个单词外的首字母需大写.如: myDirective. 在html页面调用该指令时需要以 - 分割,如: my-directive.示例代码: <body ng-app="myApp"> <my-directive><

AngularJs ng-route路由详解

本篇基于ng-route来讲下路由的使用...其实主要是 $routeProvider 搭配 ng-view 实现. ng-view的实现原理,基本就是根据路由的切换,动态编译html模板. 更多内容参考:Angularjs总结 前提 首先需要在页面引入angular和angular-route,注意要在angular-route之前引入angular <script src="../../bower_components/angular/angular.js"></

angularjs directive 实例 详解

前面提到了angularjs的factory,service,provider,这个可以理解成php的model,这种model是不带html的,今天所说的directive,也可以理解成php的model,也可以理解成插件,只不过这种model是带html的,例如:php的分页函数. 一,angularjs directive的常用格式,以及参数说明 1,直接return phonecatDirectives = angular.module('phonecatDirectives', [])

AngularJS执行流程详解(转)

一.启动阶段 大家应该都知道,当浏览器加载一个HTML页面时,它会将HMTL页面先解析成DOM树,然后逐个加载DOM树中的每一个元素节点.我们可以把AngularJS当做一个类似jQuery的js库,我们通过<script>标签引入到HTML中,那么此时Angular就做为一个普通的DOM节点等待浏览器解析,当浏览器解析到这个节点时,发现它是一个js文件,那么浏览器会停止解析剩余的DOM节点,开始执行这个js(即angular.js),同时Angular会设置一个事件监听器来监听浏览器的DOM

深究AngularJS——自定义服务详解(factory、service、provider)

前言 3种创建自定义服务的方式. Factory Service Provider 大家应该知道,AngularJS是后台人员在工作之余发明的,他主要应用了后台早就存在的分层思想.所以我们得了解下分层的作用,如果你是前端人员不了解什么是分层,那么你最好问问你后台的小伙伴. dao层:就是Model层,在后台时,这一层的作用,就要是写与数据库交互数据的一层,在angularJS里就主要是写ajax的. service层:主查写逻辑代码的,但在angularJS里也可以持久化数据(充当数据容器),以

AngularJS指令的详解

指令作为AngularJS中最为重要的部分,所以这个框架本身也是自带了比较多的的指令,但是在开发中,这些指令通常不能满足我们的需要,所以我们也是需要自定义一些指令的.指令是我们用来扩展浏览器能力的技术之一.在DOM编译期间,和HTML元素关联着的指令会被检测到,并且被执行.这使得指令可以为DOM指定行为,或者改变它. angular在编译期间,编译器会用$interpolate服务去检查文本中是否嵌入了表达式.这个表达式会被当成一个监视器一样注册,并且作为$digest循环中的一部分,它会自动更

AngularJS开发指南13:AngularJS的过滤器详解

AngularJS过滤器是用来格式化输出数据的.除了格式化数据,过滤器还能修改DOM.这使得过滤器通常用来做些如“适时的给输出加入CSS样式”等工作. 比如,你可能有些数据在输出之前需要根据进行本地化.你可以向下面这样使用链式的过滤器来传递表达式: name | uppercase 这个表达式执行时会将name的值传递给uppercase过滤器. 写一个你自己的过滤器非常容易:在你的模块中注册一个新的过滤器(可注入的)工厂函数就行了.这个工厂函数必须返回一个新的过滤器函数,这个过滤函数的第一个参

AngularJS开发指南6:AngularJS表单详解

表单控件(input, select, textarea )是用来获取用户输入的.表单则是一组有联系的表单控件的集合. 用户能通过表单和表单控件提供验证的服务,知道自己的输入是否合法.这样能让用户交互变得友好,因为用户能通过反馈来修正自己的错误.不过,虽然客户端的验证能够起到很大作用,但也很容易被绕过,所以不能完全依靠客户端验证. 要建立安全的应用,服务器端验证还是必不可少的. 了解AngularJS双向绑定的关键在于了解ngModel指令.这个指令通过动态将model和view互相映射,来实现

AngularJS指令参数详解

指令,很重要 AngularJS与jQuery最大的区别在哪里?我认为,表现在数据双向绑定,实质就是DOM的操作形式不一样. jquery通过选择器找到DOM元素,再赋予元素的行为: 而angularjs则是,将指令与DOM绑定在一起,再扩展指令的行为. 所以AngularJS开发最理想的结果就是,在页面HTML与CSS的设计时,设计工程师只需要关注指令的使用:而在背后的逻辑开发上,架构工程师则是不需要知道如何操作DOM,只需要关注指令背后的行为要如何实现就行:测试工程师也可以开发针对指令的单元