博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于 this指向问题的详解
阅读量:4982 次
发布时间:2019-06-12

本文共 1310 字,大约阅读时间需要 4 分钟。

在这篇文章中主要跟大家简单总结一下js中的this指向问题

JS中, this的值取决于调用的模式, 下面就给大家详细的列举一下

1.所有在全局环境下声明的变量或方法都属于window对象

//1.function声明函数    var name="李四"    function fn(){    console.log(this.name)     }//    fn()//window 李四//2.function 声明函数赋给变量    var fun = function(name){    console.log(name)   }   fun('蜘蛛')//window 蜘蛛// 3.自执行函数   (function(name){// console.log(name)   }('赵四'))//window 赵四

2.方法调用中this的指向

//1.对象方法调用var obj = {method: function(fn) { console.log(fn)}};obj.method(1); //2.事件绑定var btn = document.querySelector('button')btn.addEventListener('click',function(){console.log(this)//btn})

3.在构造函数中使用(先看谁在调用再判断this指向)

function show(name) {this.val = name;};show.prototype.getVal = function() {console.log(this.val);};var func = new show(1);func.getVal(); console.log(func.val)

4.可以改变this指向的属 call apply bind

//1.call()function sayName(name){console.log(this.name)}var name = '张三'var person1 = {name:'李四'}var person2 = {name:'王五'}sayName()//张三sayName.call(person1)//李四sayName.call(person2)//王五//2.apply()sayName.apply(person1,[person1])sayName.apply(person2,[person2])//3.bind()方法第一个参数是我们希望函数中this指向的对象,后面是我们希望给函数的参数绑定的值var person = {name:'刘罗锅',age:98,gender:'男'}function myName(age,gender){console.log(this.name,age,gender)}var newName = myName.bind(person,78,'男')newName()

 

转载于:https://www.cnblogs.com/sw91092/p/7532520.html

你可能感兴趣的文章
python 基本文件操作
查看>>
java开发注解大全
查看>>
日期、时间、数字格式转换
查看>>
什么是网络环路问题?
查看>>
autofac使用笔记
查看>>
面试题1—选取同一个字符第一不重复的字符
查看>>
新一代网站群的分享
查看>>
台州 OJ 2676 Tree of Tree 树状 DP
查看>>
Linux 下安装 MATLAB
查看>>
react
查看>>
JQUERY1.9学习笔记 之基本过滤器(七) 语言选择器
查看>>
Computer Vision的尴尬 转载自 林达华
查看>>
尝试MVP模式
查看>>
可拖拽的ListBox
查看>>
queue
查看>>
cppgl:一个对现代OpenGL的C++封装
查看>>
FFmpeg—— Bitstream Filters 作用
查看>>
给标签a加图标
查看>>
Sql 四大排名函数(ROW_NUMBER、RANK、DENSE_RANK、NTILE)(转载)
查看>>
git使用
查看>>