JS:this关键字1
this 代表了当前的对象,哪个对象调用了this所在的函数,this就代表了哪个对象;
例1:
function fn(){
var a = 1;
console.log(this)
}
fn()
控制台打印结果: Window {window: Window, self: Window, document: document, name: '', location: Location, …}
此时,是Window对象调用了fn这个函数,所以this指向了Window。
例2:
var obj = {
b : 2,
name : "lili",
fn:function(){ var a = 3; console.log(this); } }
obj.fn()
控制台打印结果: {b: 2, name: 'lili', fn: ƒ}
此时是obj对象调用了函数fn,因此this指向了obj,控制台返回的是obj整个对象。
例3:
var obj2={fn:function(){console.log(this,1111)}}
var arr=[]
arr[0]=100
arr[1]=obj2.fn
console.log(arr[1])//window obj2
arr[1]()
obj2["fn"]()
打印结果:

调用者是arr时,this就指向了arr;
调用者是obj2时,this就指向了obj2。
例4:
var obj = {
name: "father",
son: {
name: "son",
say: function () {
console.log(this)
}
}
}
obj.son.say() //调用者时obj.son
var a = obj.son.say
a(); //调用者是window
var arr = [a]
arr[0](); //调用者是arr
结果:

例5:
找到函数的真正调用者
var obj = {
name: "karen",
say: function () {
console.log(this) //obj
function fn(a) {
console.log(a, this) //obj winodw
}
fn(this) //fn(obj)
}
}
obj.say() //obj
fn() // window
obj.fn() //obj
obj.xx.xx2() //obj.xx
(function () {})() //window
fn()() //window
fn()[1]() // fn()返回的数组
var name = 'lili';
var obj = {
name: 'fa',
prop: {
name: 'sn',
getname: function () {
return this.name;
}
}
};
console.log(obj.prop.getname()); //调用者是obj.prop; sn
var test = obj.prop.getname; //在window环境下定义的test;
console.log(test()); //调用者是window; lili;
var name = "lili";
var obj = {
name: "karen",
fn: function () {
console.log(this.name)
}
}
var a = obj.fn
a() //window; lili
JS:this关键字1的更多相关文章
- js 中关键字 this的用法
<1> js中this 的用法? (key:函数是由调用的,四种情况标红可知) (http://www.ruanyifeng.com/blog/2010/04/using_this_k ...
- js基础 1.简单js 语法 关键字 保留字 变量
简单js JavaScript 是一个松散性的语言 对象属性却不想c中的结构体或者c++ 和java的对象, 对象继承机制 使用原型的prototype(原型链),js的分为三部分ECMAScript ...
- day1——js方法关键字的问题(onclick点了没反应)
<a href="javascript:void(0);" onclick="search();" >提交</a> js代码: fu ...
- js常用关键字和函数
document.createElement("div"): 创建一个div元素申明一个变量 document.body.appendChild(div); 将创建好的div添 ...
- js 查找关键字
查找:4种: 1. 查找固定关键字,仅返回位置,可指定开始位置: var i=str.indexOf("kword"[,starti]); str.lastIndexOf(&quo ...
- JavaScript高级程序设计(五): js的关键字instanceof和typeof使用
JavaScript中instanceof和typeof 常用来判断一个变量是否为空,或者是什么类型的.但它们之间还是有区别的: 一.typeof 1.含义:typeof返回一个表达式的数据类型的字符 ...
- ASP.NET给前端动态添加修改 CSS样式JS 标题 关键字
有很多网站读者能换自己喜欢的样式,还有一些网站想多站点共享后端代码而只动前段样式,可以采用动态替换CSS样式和JS. 如果是webform 开发,可以用下列方法: 流程是首先从数据中或者xml读取数据 ...
- [js]this关键字代表当前执行的主体
点前是谁,this就是谁 <div id="div1" class="div1"></div> <div id="div ...
- js new关键字
实现new 关键字只需4步 1. 声明一个对象: 2. 把这个对象的__proto__ 指向构造函数的 prototype; 3. 以构造函数为上下文执行这个对象: 4. 返回这个对象. 简洁的代码示 ...
- JS的关键字this
1.关于this this关键字是JavaScript中最复杂的机制之一.它是一个很特别的关键字,被自动定义在所有函数的作用域中. 1.1 为什么要用this? this提供了一种更优雅的方式来隐式地 ...
随机推荐
- win10设置开机自启动程序
问题情境:前两天刚刚给自己的win10系统美化了一下,但发现一个问题,每次开机都需要双击启动一个程序,才能达到一个我想要的效果,所以就在思考能不能将这个程序设为开机自启动项呢? 1.首先,找到启动文件 ...
- Chrome JSON格式化插件
1.JSONView插件下载地址:https://github.com/gildas-lormeau/JSONView-for-Chrome 2.解压(E:\json) 3.打开Chrome-扩展程序 ...
- springboot+springsecurity+mybatis plus之用户认证
一.权限管理的概念 另一个安全框架shiro:shiro之权限管理的描述 导入常用坐标 <dependency> <groupId>org.springframework.bo ...
- 2021年Java后端技术知识体系
-----2021/1/22
- C++篇:第四章_函数_知识点大全
C++篇为本人学C++时所做笔记(特别是疑难杂点),全是硬货,虽然看着枯燥但会让你收益颇丰,可用作学习C++的一大利器 五.函数 (一)函数使用规则 函数的定义不能嵌套但调用可以嵌套 在函数调用时,如 ...
- NodeJS学习day2
今天还是接着学习IO,主要方面是文件路径相关操作 练习代码如下: const fs = require('fs') // 执行C:\CS\Node.js>node .\day2\fsRoad.j ...
- jsp第二周作业
1.p39 实验2 显示当前时间,并输出上午(0-12)好,下午好(13-17),晚上好(18-23) <%@ page language="java" import=&qu ...
- python基础练习题(题目 取一个整数a从右端开始的4〜7位。)
day36 --------------------------------------------------------------- 实例054:位取反.位移动 题目 取一个整数a从右端开始的4 ...
- C#常见控件与SQL Sever数据库交互
C#常见控件与SQL Sever数据库交互 下拉框(ComboBox)与数据库绑定 首先,我们采用DataSet作为临时的数据库,这样会比较好 那么,我们先创建两个成员(对象) string sqlc ...
- 我们必须要了解的Java位运算(不仅限于Java)
本文原创地址为 https://www.cnblogs.com/zh94/p/16195373.html 原创声明:作者:陈咬金. 博客地址:https://www.cnblogs.com/zh94/ ...