文档章节

JavaScript this 对象的总结

施长成
 施长成
发布于 2015/04/02 13:18
字数 543
阅读 9
收藏 0

this 关键字引用的是包含它的函数作为某个对象的方法被调用时的那个对象——《JavaScript .Dom 高级程序设计》

和变量不同,关键字 this没有作用域的限制,嵌套的函授不会从调用它的函数中继承 this。如果嵌套函数作为方法调用,其this值指向调用他的对象,如果嵌套函数作为函数调用,其this值不是全局对象就是 undefined ——《JavaScript权威指南》

上面是两本比较权威的书,对js的定义。

this 是 js的一个关键字,随着函数的使用 场合不同,this的值也会发生变化的。但是总有一个原则,那就是this只的是调用函数的那个对象

JavaScript有一套完全不同于其他语言的对 this 的处理机制。在五种不同的情况下,this指向各不相同的对象。

  1. 全局范围内

    1. this;//在全局范围内使用 this,this会指向全局对象 window
  2. 函数调用

    1. 形如: foo();//这是 foo函数中的 this对象也会指向全局。 window
  3. 方法调用

    1. 形如: test.foo();//此时foo函数中的 this对象会指向test对象。
  4. 调用构造函数

    1. new foo();//由new创建出的函数,我们称知为构造函数。在函数内容this指向新创建的对象
  5. 显示的是指this

    1. 当使用 Function.prototype 上的call或者apply方法时,函数内部的this会被显式的设置为函数调用的第一个参数

  6. 特殊情况

Foo.method = function(){
    function test(){
        //this 会被设置为全局对象(就是window对象)
    }    
}

    常见的误解是test中的this将会指向Foo对象,实际上他是指向window全局对象

    7. 自己收集的

var shi = {
        init:function(){
            this.button();
        },
        button:function(){
            console.log(this == shi);//true
            console.log(this);//Object
            console.log("shi----button")
        }
    }

        一个json对象中的 this 表示他自身这个对象即上例中的 shi 对象。


© 著作权归作者所有

共有 人打赏支持
施长成
粉丝 5
博文 65
码字总数 23983
作品 0
浦东
后端工程师
JavaScript菜鸽子基础知识总结(一)

学习JavaScript有段时间了,尽管学的不怎么好。但我相信有志者,铁杵磨成针。呵呵呵~~ ①JavaScript能做什么?我所了解的 ⑴在HTML网页中放入动态文本 ⑵响应用户在使用网页时产生的事件 ⑶检...

睡觉谁教谁叫呢
2014/02/18
0
0
js面向对象的一些初级知识总结~~

javascript作为一门解释性脚本语言,有着其独特的魅力.既具有函数编程的特性,又具有面向对象的特征.以前的开发中,大多是使用了javascript的函数式编程,最近,发现其的面向对象也有一定的优势,...

乔康007
2013/02/24
0
0
JavaWeb01-HTML篇笔记(七)

.1 案例三:完成对注册页面的数据的简单校验.1.1.1 需求: 对注册页面的数据进行非空的简单校验!!!如果有某个值没有输入,点击提交,弹出一个对话框进行提示!! 1.1.2 分析:1.1.2.1 技术分...

我是小谷粒
04/28
0
0
用JavaScript(JScript)写ASP程序(build asp with server-side javascript)的优缺点及经验总结。

用JavaScript(JScript)写ASP程序(build asp with server-side javascript)的优缺点及经验总结。 “谋划”了很长时间,整理学习了很多代码。只是想到哪儿写到哪儿,不断更新;欢迎有过此类编程...

晨曦之光
2012/03/09
0
0
JS-DOM2级事件对象跨浏览器处理(已封装)

2 //添加事件 3 addHander: function(element, type, handler) { 4 if(element.addEventListener) { 5 element.addEventListener(type, handler, false); 6 } else if(element.attachEvent) ......

鋒o丫头
2016/09/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

工作日志 ,城市ip地址整理

INSERT INTO sSELECT a.city,b.startip,b.endip FROM cityinfo a JOIN t_ip bON b.cheng LIKE CONCAT("%" ,a.city ,"%")ORDER BY a.cityHAVING COUNT(a.city)<=5ORD......

haifei2017
刚刚
0
0
cdn是否可以抵御ddos的攻击

随着近年来来网络技术的不断进步,cdn不仅可以简单的用做网站加速,还能够更好的保护网站不被攻击。cdn在相关节点中成功的建立动态加速机制以及智能沉于等机制,能够帮助网站流量访问分配到每...

上树的熊
7分钟前
1
0
Oracle修改字符集

1.cmd下,cd到oracle数据库软件的服务器端 如:D:\app\Administrator\product\11.2.0\dbhome_1\BIN 2.输入set ORACLE_SID=你想进入的数据库的那个sid 3.输入 sqlplus /nolog 4.将数据库启动到...

lyle_luo
13分钟前
0
0
Xamarin Essentials教程打开文件

Xamarin Essentials教程打开文件 FileSystem类的OpenAppPackageFileAsync()方法可以用来打开App包中特定的文件,其语法形式如下: public static System.Threading.Tasks.Task<System.IO.St...

大学霸
24分钟前
0
0
Redis应用之分布式锁(set)

Redis应用之分布式锁(set) 在单机应用的场景下,我们常使用的锁主要是synchronized与Lock;但是在分布式横行的大环境下,显然仅仅这两种锁已经无法满足我们的需求; 需求:秒杀场景下,有若干...

GMarshal
37分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部