this解析
定时器中的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解析的更多相关文章
- 【原】Android热更新开源项目Tinker源码解析系列之三:so热更新
本系列将从以下三个方面对Tinker进行源码解析: Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Android热更新开源项目Tinker源码解析系列之二:资源文件热更新 A ...
- .NET Core中的认证管理解析
.NET Core中的认证管理解析 0x00 问题来源 在新建.NET Core的Web项目时选择“使用个人用户账户”就可以创建一个带有用户和权限管理的项目,已经准备好了用户注册.登录等很多页面,也可 ...
- Html Agility Pack 解析Html
Hello 好久不见 哈哈,今天给大家分享一个解析Html的类库 Html Agility Pack.这个适用于想获取某网页里面的部分内容.今天就拿我的Csdn的博客列表来举例. 打开页面 用Fir ...
- 【原】Android热更新开源项目Tinker源码解析系列之一:Dex热更新
[原]Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Tinker是微信的第一个开源项目,主要用于安卓应用bug的热修复和功能的迭代. Tinker github地址:http ...
- 【原】Android热更新开源项目Tinker源码解析系列之二:资源文件热更新
上一篇文章介绍了Dex文件的热更新流程,本文将会分析Tinker中对资源文件的热更新流程. 同Dex,资源文件的热更新同样包括三个部分:资源补丁生成,资源补丁合成及资源补丁加载. 本系列将从以下三个方 ...
- 多线程爬坑之路-Thread和Runable源码解析之基本方法的运用实例
前面的文章:多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类) 多线程爬坑之路-Thread和Runable源码解析 前面 ...
- Asp.Net WebApi核心对象解析(下篇)
在接着写Asp.Net WebApi核心对象解析(下篇)之前,还是一如既往的扯扯淡,元旦刚过,整个人还是处于晕的状态,一大早就来处理系统BUG,简直是坑爹(好在没让我元旦赶过来该BUG),队友挖的坑, ...
- 【知识必备】内存泄漏全解析,从此拒绝ANR,让OOM远离你的身边,跟内存泄漏say byebye
一.写在前面 对于C++来说,内存泄漏就是new出来的对象没有delete,俗称野指针:而对于java来说,就是new出来的Object放在Heap上无法被GC回收:而这里就把我之前的一篇内存泄漏的总 ...
- SQL Server 数据加密功能解析
SQL Server 数据加密功能解析 转载自: 腾云阁 https://www.qcloud.com/community/article/194 数据加密是数据库被破解.物理介质被盗.备份被窃取的最 ...
- .NetCore中的日志(1)日志组件解析
.NetCore中的日志(1)日志组件解析 0x00 问题的产生 日志记录功能在开发中很常用,可以记录程序运行的细节,也可以记录用户的行为.在之前开发时我一般都是用自己写的小工具来记录日志,输出目标包 ...
随机推荐
- VS2012载入DLL编译出现试图载入格式不对的程序; 以及执行出现Mixed mode assembly is built against version 'v2.0.50727' of the
VS2012载入DLL编译出现试图载入格式不对的程序:以及执行出现Mixed mode assembly is built against version 'v2.0.50727' of therun ...
- javascript面对对象编程 之继承
上一篇博客中为大家介绍了javascript面向对象编程原则的封装,今天为大家介绍继承.在javascript中没有类的概念,全部不能像c#.java语言那样.直接的用类去继承类.比方如今有比方.如今 ...
- zeros() 函数——MATLAB
zeros函数——生成零矩阵 ones函数——生成全1阵 [zeros的使用方法] B=zeros(n):生成n×n全零阵. B=zeros(m,n):生成m×n全零阵. B=zeros([m n]) ...
- springboot(十四):springboot整合shiro-登录认证和权限管理(转)
springboot(十四):springboot整合shiro-登录认证和权限管理 .embody{ padding:10px 10px 10px; margin:0 -20px; border-b ...
- php二维数组中的查找(善于利用基础函数)
php二维数组中的查找(善于利用基础函数) 一.总结 真没必要完整的写函数,善于借用 1.array_search()是在以为数组中来找,现在我们要在二维数组数组中来,肯定要借用这个 2.!==fal ...
- 反向代理:是指以代理server来接收Internet上的请求,然后将请求转发到内部网络的server上,并将结果返回给Internet上连接的client,此时的代理server对外就表现为反向代理server。
Nginx安装好之后.開始使用它来简单实现反向代理与负载均衡的功能.在这之前.首先得脑补一下什么是反向代理和负载均衡. 反向代理:是指以代理server来接收Internet上的请求,然后将 ...
- Write Code As If You Had to Support It for the Rest of Your Life
Write Code As If You Had to Support It for the Rest of Your Life Yuriy Zubarev YOU COULD ASK 97 PEOP ...
- 网易前端微专业,JavaScript程序设计基础篇:数组
不论什么一种语言数组都是比較重要的,其作为一种基础对象应用非常多,如Java你肯定少不了集合(List,Map)这些.因此本篇主要记录JS的数组使用和经常用法.要点例如以下: 1,数组创建 两种方式: ...
- [Javascript] Format console.log with CSS and String Template Tags
The Chrome console allows you to format messages using CSS properties. This lesson walks you through ...
- 【codeforces 758B】Blown Garland
time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...