1.在一般函数方法中使用 this 指代全局对象
function test(){this.x = 1;alert(this.x);}test(); // 1
2.作为对象方法调用,this 指代上级对象
function test(){alert(this.x);
}
var o = {};
o.x = 1;
o.m = test;
o.m(); // 1
3.作为构造函数调用,this 指代new 出的对象
function test(){this.x = 1;}var o = new test();alert(o.x); // 1//运行结果为1。为了表明这时this不是全局对象,我对代码做一些改变:var x = 2;function test(){this.x = 1;}var o = new test();alert(x); //2
4.apply 调用 ,apply方法作用是改变函数的调用对象,此方法的第一个参数为改变后调用这个函数的对象,this指代第一个参数
var x = 0;function test(){alert(this.x);}var o={};o.x = 1;o.m = test;o.m.apply(); //0
//apply()的参数为空时,默认调用全局对象。因此,这时的运行结果为0,证明this指的是全局对象。如果把最后一行代码修改为o.m.apply(o); //1

转载于:https://www.cnblogs.com/flower46273736/p/6424772.html

JS --- this(4)相关推荐

  1. 在js中使用HashMap数据结构,在js中使用K,V数据结构

    首先是定义一个HashMap方法,做基类(复制在js中即可,然后引用) //简单的哈希表,begin function HashMap() {/** Map 大小 * */var size = 0;/ ...

  2. js校验复选框(多选按钮)是否被选中的方法

    js校验复选框是否被选中的方法 方法一:(使用下标进行标记) if ($("#checkbox-id")get(0).checked) {// do something } 方法二 ...

  3. form表单提交前进行ajax或js验证,校验不通过不提交

    在使用form表单进行提交数据前,需要进行数据的校验->表单的校验(如:两次密码输入是否相同)+后台数据的校验(如:账号是否存在),这个时候,如果哪步校验不通过,表单将停止提交,同时避免后台主键 ...

  4. 终止js程序执行的方法

    js终止程序执行的方法共有三种 (一)在function里面(普通js方法) (1)return; (2)return false; (二)非function方法里面(如ajax方法) alert(& ...

  5. JS Uncaught SyntaxError:Unexpected identifier异常报错原因及其解决方法

    最近在写ajax的时候,调用js方法,遇到了Uncaught SyntaxError:Unexpected identifier异常报错,开始搞不清原因,很苦恼. 以为是js方法参数个数和长度的问题, ...

  6. 用js方法做提交表单的校验

    基础知识: 原始提交如下: <form action="<%=basePath %>puser/register" method="post" ...

  7. 【JavaScript总结】JavaScript语法基础:JS高级语法

    作用域链: 1.JS中只有函数能够限定作用域的范围: 2.变量处理在制定的函数范围内,还有一个特殊的作用域,就是没有用var 声明的全局作用域 3.js中的作用域链是为了清晰的表示出所有变量的作用范围 ...

  8. 【JavaScript总结】JavaScript语法基础:JS编码

    运算符 数学:+. -. *. / 逻辑:>. < .>= .<=. == . !=.&&.|| . === .!==(完全等于) 对象相关 new delet ...

  9. js获取html代码中所有图片地址

    /** * JS获取html代码中所有的图片地址 * @param htmlstr * @returns imgsrcArr 数组 */ function getimgsrc(htmlstr) { v ...

  10. Node.js 简单入门

    目录 一. 什么是Nodejs 二. Nodejs组成图(对比jdk) 三. Nodejs的安装 四. 第一个Nodejs程序 五. Node实现请求响应 六. Node操作MYSQL数据库 1. 安 ...

最新文章

  1. 复合的赋值运算符例题_Java千问:关于Java语言复合赋值运算符的两个问题,快来瞧瞧!...
  2. 开源项目中成长:从实习小白到核心开发者
  3. linux shell date 日期格式转换
  4. C++中public,protected,private访问范围和用法
  5. 斐波那契数列算法(C#)
  6. STM32之option bytes踩坑记录
  7. avogadro_Avogadro
  8. Android之RecyclerView 实现真正的Gallery效果
  9. ida调试linux程序,MAC使用IDA PRO远程调试LINUX程序
  10. 您能解决这3个(看似)简单的Python问题吗?
  11. 数据库、C#、Java生成唯一GUID 方法
  12. 【opencv】错误提示OpenCV Error: Assertion failed
  13. 音频格式处理--SOX
  14. win设置右键快捷打开软件
  15. 用20门编程语言说生日快乐/我爱你
  16. 用记事本编写小游戏_一款适合你的记事本——提高你工作的效率!
  17. javaWeb开发的放推特项目之推特发布
  18. 制作移动硬盘或U盘的MAC安装盘
  19. adb logcat 命令
  20. layui复选框,设置部分可选

热门文章

  1. zabbix替代smokeping的解决方案
  2. Codeforces Ilya and Queries
  3. 确保移动设备的安全:在保护数据的同时提高工作效率
  4. 数据绑定--Repeater, DataList, or GridView?
  5. 使用tcgetattr函数与tcsetattr函数控制终端-转
  6. SQLite学习手册(索引和数据分析/清理)-转
  7. A10负载均衡设备基础配置
  8. Perl 字符串截取函数substr
  9. java连接远程带有密码的mongodb数据库
  10. linux必备常用重要命令汇总