文档章节

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
用JavaScript(JScript)写ASP程序(build asp with server-side javascript)的优缺点及经验总结。

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

晨曦之光
2012/03/09
0
0
JavaWeb01-HTML篇笔记(七)

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

我是小谷粒
04/28
0
0
js面向对象的一些初级知识总结~~

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

乔康007
2013/02/24
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

没有更多内容

加载失败,请刷新页面

加载更多

Mariadb二进制包安装,Apache安装

安装mariadb 下载二进制包并解压 [root@test-a src]# wget https://downloads.mariadb.com/MariaDB/mariadb-10.2.6/bintar-linux-glibc_214-x86_64/mariadb-10.2.6-linux-glibc_214-x86_64.t......

野雪球
今天
3
0
ConcurrentHashMap 高并发性的实现机制

ConcurrentHashMap 的结构分析 为了更好的理解 ConcurrentHashMap 高并发的具体实现,让我们先探索它的结构模型。 ConcurrentHashMap 类中包含两个静态内部类 HashEntry 和 Segment。HashEnt...

TonyStarkSir
今天
3
0
大数据教程(7.4)HDFS的java客户端API(流处理方式)

博主上一篇博客分享了namenode和datanode的工作原理,本章节将继前面的HDFS的java客户端简单API后深度讲述HDFS流处理API。 场景:博主前面的文章介绍过HDFS上存的大文件会成不同的块存储在不...

em_aaron
昨天
4
0
聊聊storm的window trigger

序 本文主要研究一下storm的window trigger WindowTridentProcessor.prepare storm-core-1.2.2-sources.jar!/org/apache/storm/trident/windowing/WindowTridentProcessor.java public v......

go4it
昨天
7
0
CentOS 生产环境配置

初始配置 对于一般配置来说,不需要安装 epel-release 仓库,本文主要在于希望跟随 RHEL 的配置流程,紧跟红帽公司对于服务器的配置说明。 # yum update 安装 centos-release-scl # yum ins...

clin003
昨天
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部