定时器中的this

        function Aaa()
{
var _this = this; //解决关键
this.a = 12;
//但凡被定时器调的函数,this必然是window,所以,show里面的this.a是undefined的
// setInterval(this.show, 1000);
setInterval(function () { _this.show(); }, 1000);
} Aaa.prototype.show = function ()
{
console.log(this.a);
} var obj = new Aaa();
obj.show();

按钮事件中的this

        function Bbb()
{
var _this = this;
this.b = 5;
var btn = document.getElementById('btn1');
//同理,onclick下show函数中如果是this,则指的是按钮,this.show()将会是undefined,所以得存起来 //btn.onclick = (function () {
// this.show();
//}).bind(this); //或者 btn.onclick = function () {
_this.show();
} btn.ondblclick = function () {
console.log(this.value); //弹出按钮的显示文本
}
} Bbb.prototype.show = function () {
console.log(this.b);
} window.onload = function () {
new Bbb();
}
        document.write('Show this');
//输出: Show this
document.write('Show this');
//输出: window

作用域

        var fun = 90;
(function () {
//对于fun,首先本范围内上部没有,那么就找本范围内的函数,如果函数没有就找外部,
//如果外部没有就undefinded,不会因为下部有但不是函数就选择下部的
console.log(fun); //输出的是fun2的那个
function fun() {
console.log('我是fun1方法');
}
function fun() {
console.log('我是fun2方法');
}
var fun = 3;
console.log(fun); //3
})()
        var mmm = "da";
var obj = {
mmm: "xiao",
method: function () {
console.log(this.mmm); //xiao
function shakereturn() {
var mmm = "zuixiao";
console.log(this.mmm); //da
}
shakereturn(); (function shakereturn2() {
var mmm = "zuixiao2";
console.log(this.mmm); //da
})() }
}
obj.method();

参数绑定

        function attachfun(b, c) {
console.log(this.a + b + c);
}
attachfun(3, 4);//NaN
var bbb = { a: 20 };
attachfun.apply(bbb, [3, 4]);
attachfun.call(bbb, 3, 4);
var f_1 = attachfun.bind(bbb);
f_1(3, 4);
var f_2 = attachfun.bind(bbb, 3);
f_2(4);
        //可以使用bind来设置this达到this暂存的效果。
var bar = {
name: "bar",
body: document.getElementsByTagName("body")[0], greeting: function () {
console.log("Hi there, I'm " + this + ":" + this.name);
}, anotherMethod: function () {
this.body.addEventListener("click", (function () {
this.greeting();
}).bind(this));
}
}; bar.anotherMethod();
// Hi there, I'm [object Object]:bar

this解析的更多相关文章

  1. 【原】Android热更新开源项目Tinker源码解析系列之三:so热更新

    本系列将从以下三个方面对Tinker进行源码解析: Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Android热更新开源项目Tinker源码解析系列之二:资源文件热更新 A ...

  2. .NET Core中的认证管理解析

    .NET Core中的认证管理解析 0x00 问题来源 在新建.NET Core的Web项目时选择“使用个人用户账户”就可以创建一个带有用户和权限管理的项目,已经准备好了用户注册.登录等很多页面,也可 ...

  3. Html Agility Pack 解析Html

    Hello 好久不见 哈哈,今天给大家分享一个解析Html的类库 Html Agility Pack.这个适用于想获取某网页里面的部分内容.今天就拿我的Csdn的博客列表来举例. 打开页面  用Fir ...

  4. 【原】Android热更新开源项目Tinker源码解析系列之一:Dex热更新

    [原]Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Tinker是微信的第一个开源项目,主要用于安卓应用bug的热修复和功能的迭代. Tinker github地址:http ...

  5. 【原】Android热更新开源项目Tinker源码解析系列之二:资源文件热更新

    上一篇文章介绍了Dex文件的热更新流程,本文将会分析Tinker中对资源文件的热更新流程. 同Dex,资源文件的热更新同样包括三个部分:资源补丁生成,资源补丁合成及资源补丁加载. 本系列将从以下三个方 ...

  6. 多线程爬坑之路-Thread和Runable源码解析之基本方法的运用实例

    前面的文章:多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类) 多线程爬坑之路-Thread和Runable源码解析 前面 ...

  7. Asp.Net WebApi核心对象解析(下篇)

    在接着写Asp.Net WebApi核心对象解析(下篇)之前,还是一如既往的扯扯淡,元旦刚过,整个人还是处于晕的状态,一大早就来处理系统BUG,简直是坑爹(好在没让我元旦赶过来该BUG),队友挖的坑, ...

  8. 【知识必备】内存泄漏全解析,从此拒绝ANR,让OOM远离你的身边,跟内存泄漏say byebye

    一.写在前面 对于C++来说,内存泄漏就是new出来的对象没有delete,俗称野指针:而对于java来说,就是new出来的Object放在Heap上无法被GC回收:而这里就把我之前的一篇内存泄漏的总 ...

  9. SQL Server 数据加密功能解析

    SQL Server 数据加密功能解析 转载自: 腾云阁 https://www.qcloud.com/community/article/194 数据加密是数据库被破解.物理介质被盗.备份被窃取的最 ...

  10. .NetCore中的日志(1)日志组件解析

    .NetCore中的日志(1)日志组件解析 0x00 问题的产生 日志记录功能在开发中很常用,可以记录程序运行的细节,也可以记录用户的行为.在之前开发时我一般都是用自己写的小工具来记录日志,输出目标包 ...

随机推荐

  1. 微服务实战(三):深入微服务架构的进程间通信 - DockOne.io

    原文:微服务实战(三):深入微服务架构的进程间通信 - DockOne.io [编者的话]这是采用微服务架构创建自己应用系列第三篇文章.第一篇介绍了微服务架构模式,和单体式模式进行了比较,并且讨论了使 ...

  2. Codeforces Round #234 (Div. 2):B. Inna and New Matrix of Candies

    B. Inna and New Matrix of Candies time limit per test 1 second memory limit per test 256 megabytes i ...

  3. js进阶 12-15 jquery如何实现点击button显示列表,点击其它位置隐藏列表

    js进阶 12-15 jquery如何实现点击button显示列表,点击其它位置隐藏列表 一.总结 一句话总结:在button中阻止事件冒泡. 1.如何咋button中阻止事件冒泡(两种方法)? ev ...

  4. amazeui学习笔记--js插件(UI增强3)--折叠面板Collapse

    amazeui学习笔记--js插件(UI增强3)--折叠面板Collapse 一.总结 注意点: 1.data-am-collapse:这个东西就是展开折叠事件 2.am-collapse(包括其下属 ...

  5. 【习题 5-11 UVA 12504 】Updating a Dictionary

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 不确定某个map里面是否有某个关键字的时候. 要用find来确定. 如果直接用访问下标的形式去做的话. 会强行给他加一个那个关键字( ...

  6. PostgreSQL 序列

    PostgreSQL 中的序列是一个数据库对象,本质上是一个自增器.因此,序列在其他同类型数据库软件中以 autoincrment 值的形式存在.在一张表需要非随机,唯一标实符的场景下,Sequenc ...

  7. 结合Wireshark捕获分组深入理解TCP/IP协议之IP协议

    摘要:     本文简单介绍了网络层理论知识,详细讲解了IP数据报各个字段,并从Wireshark俘获分组中选取IP数据报进行分析,也阐述了分组和分片的区别.   一.IPv4数据报     网络层是 ...

  8. python3 序列

    python中有很多内置序列 列表 元组 字符串 python中容器的概念 列表 元组 字符串 字典 集合 是可以改变的,元组不可改变 几乎可以在所有情况下用列表代替元组,只有一种情况下,是不可以的, ...

  9. Ubuntu设置IP(VMware9.03)

    说明:在VMware上新安装Ubuntu11.04(64位) vi编辑器特难用,输入老出错,费了老大劲才把IP改好,IP改完之后最好立马重装一个编辑器vim. 设置静态IP: # vi /etc/ne ...

  10. [Recompose] Transform Props using Recompose --mapProps

    Learn how to use the 'mapProps' higher-order component to modify an existing component’s API (its pr ...