1、在一般函数中使用 this 指全局对象 window

function fn(){
this.x = 1
}
fn(); //相当于window.fn()

2、作为对象方法使用 this 指该对象

function fn(){
alert(this.x) //this是调用该函数的obj对象 输出test
}
var obj = {'fn':fn,'x':'test'}
obj.fn();

3、作为构造函数使用 this 指new 函数出的对象

function fn(){
this.x = 123; //this是调用该函数的obj对象
}
var obj = new fn(); //obj = {x:123}

4、apply 调用函数,apply 方法作用是改变函数的调用对象,此方法第一个参数为改变后的调用函数的对象,函数里this指第一个参数

var x = 11;
function fn(){
alert(this.x)
}
var obj = {'fn':fn,'x':22}
var obj2 = {'x':33}
obj.fn.apply(); // 11 ,apply()参数为空时,默认调用的是全局对象,this当前指全局对象
obj.fn.apply(obj); // 22
obj.fn.apply(obj2); // 33

JS中 this 的四种用法的更多相关文章

  1. js中this 的四种用法

    this 在函数执行时,this 总是指向调用该函数的对象.要判断 this 的指向,其实就是判断 this 所在的函数属于谁. 在<javaScript语言精粹>这本书中,把 this  ...

  2. JS中this的四种用法

    1.在一般函数方法中使用 this 指代全局对象 2.作为对象方法调用,this 指代上级对象 3.作为构造函数调用,this 指代new 出的对象 4.apply 调用 ,apply方法作用是改变函 ...

  3. javascript中this的四种用法

    javascript中this的四种用法 投稿:hebedich 字体:[增加 减小] 类型:转载 时间:2015-05-11我要评论 在javascript当中每一个function都是一个对象,所 ...

  4. js中this的四种使用方法

    0x00:js中this的四种调用模式 1,方法调用模式 2,函数调用模式 3,构造器调用模式 4,apply.call.bind调用模式 0x01:第一种:方法调用模式 (也就是用.调用的)this ...

  5. 【温故知新】——原生js中常用的四种循环方式

    一.引言 本文主要是利用一个例子,讲一下原生js中常用的四种循环方式的使用与区别: 实现效果: 在网页中弹出框输入0   网页输出“欢迎下次光临” 在网页中弹出框输入1   网页输出“查询中……” 在 ...

  6. C#中 this关键字 四种用法

    /// <summary> /// 主程序入口 /// </summary> /// <param name="args"></param ...

  7. c++中for的四种用法

    #include <algorithm> #include <vector> #include <iostream> using namespace std; in ...

  8. js中继承的几种用法总结(apply,call,prototype)

    一,js中对象继承 js中有三种继承方式 1.js原型(prototype)实现继承 <SPAN style="BACKGROUND-COLOR: #ffffff">& ...

  9. js中this的四种调用模式

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

随机推荐

  1. UVA:11297-Census(二维线段树)

    Census Time Limit: 8 sec Description This year, there have been many problems with population calcul ...

  2. Eclipse主题更换方法

    1.打开Eclipse的Help->Eclipse Marketplace 2.在Find里搜索Eclipse Color Theme,点击Install按钮 3.打开Window->Pr ...

  3. cf975d Ghosts

    ref #include <algorithm> #include <iostream> #include <cstdio> #include <map> ...

  4. SPFA - Luogu 3385 【模板】负环

    [模板]负环 描述 找负环 输入 第一行一个正整数T表示数据组数,对于每组数据: 第一行两个正整数N M,表示图有N个顶点,M条边 接下来M行,每行三个整数a b w,表示a->b有一条权值为w ...

  5. 编程高手解读什么是NodeJs?

    首先在搞清楚什么NodeJs之前,我们先来聊聊JavaScript,只要做过开发的人都应该知道JavaScript是目前最为流行的前端(客户端)脚 本语言,JavaScript在Web项目中的使用率可 ...

  6. leetcode 【 Partition List 】python 实现

    题目: Given a linked list and a value x, partition it such that all nodes less than x come before node ...

  7. 【BZOJ 3620】似乎在梦中见过的样子

    题目 (夢の中で逢った.ような--) 「Madoka,不要相信 QB!」伴随着 Homura 的失望地喊叫,Madoka 与 QB 签订了契约. 这是 Modoka 的一个噩梦,也同时是上个轮回中所发 ...

  8. 连接Oracle 10g时ORA-12514:TNS:监听进程不能解析在连接描述符中给出的SERVICE_NAME错误的解决

    近日服务器断电,导致客户端连接ORACLE服务器时出现ORA-12514错误,在网上查得解决方法如下 解决方法: 1. 打开/network/admin/listener.ora文件,找到: SID_ ...

  9. mysql安装 以及跳过密码登录重设

    修改MySQL的登录设置: vi /etc/my.cnf 在[mysqld]的段中加上一句:skip-grant-tables 例如: [mysqld] datadir=/var/lib/mysql ...

  10. jdk -version could not open jvm.cfg 的解决办法

    java 时出现 could not open jvm.cfg 的解决办法     问题描述: 重装JDK并更变目录后,出现JAVA -VERSION  出现could not open jvm.cf ...