码迷,mamicode.com
首页 > 其他好文 > 详细

关于 this指向问题的详解

时间:2017-09-16 22:10:47      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:环境   call   事件   第一个   bin   his   span   win   使用   

在这篇文章中主要跟大家简单总结一下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()

 



关于 this指向问题的详解

标签:环境   call   事件   第一个   bin   his   span   win   使用   

原文地址:http://www.cnblogs.com/sw91092/p/7532520.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!