认识this指向
this的运用场景有以下几个:
1.函数调用
2.对象的方法调用
3.构造函数调用
4.call和apply调用
一、函数调用
window.word = "this is global";
function aa(){
console.log(this.word)
}
function bb(){
var word = "this is bb"
aa();
}
bb();运算结果是 this is global。
可以看到当作为函数调用的时候,this指向的是window对象。
二、对象方法调用
var car = {
name : "BMW",
price : "200000",
showName:function(){
console.log(this.name);
},
showPrice:function(){
console.log(this.price)
}
}
car.showName();
car.showPrice();运算结果是:BMW 200000。
可以看到 当作为对象方法调用的时候 this指向的是car本身。
三、构造函数调用
构造函数和普通函数一模一样,区别在于调用方式,当用new运算符调用时,函数会返回一个对象,而构造器的this就指向了这个返回对象
function Car(){
this.name = "BMW";
this.price = "200000";
this.showPrice = function(){
console.log(this.price);
}
}
var car = new Car();
car.showPrice();运算结果是 200000。
由此可知,这里的this指向的是car这个对象。
四、call和apply
function Car(){
console.log(this.name);
}
var bmw = {
name:"BMW",
showName:function(){
Car.apply(this);
}
}
bmw.showName();运算后得到:BMW 。
这里通过apply(call也可以)强制把this指向了bmw这个对象。
DOM操作相关 事件和方法
javascript中的this和e.target的深入研究
this 是javascript的一个关键字,当函数运行时在内部自动生成。this是会变化的,在不同的场合,代表的东西就不一样。简单点来说,this指调用这个函数的对象。当你使用this代表的当前html元素,这样你就可以使用这个元素的属性和方法呢。
e.target 中的e是可以自己随意取名的,现在关键讲的是target。简单点说就是触发这个事件的目标元素。它和this的区别就在于this是会变得,而target是不会变得,target的认定了目标就不会发生变化了。this其实就等于e.currentTarget.
this和event.target的区别:
js中事件是会冒泡的,所以this是可以变化的,但event.target不会变化,它永远是直接接受事件的目标DOM元素;
.this和event.target都是dom对象
$(this)是触发执行当前函数块(事件处理函数)最内层(距离最近的)的jQuery对象,在你的代码中就是触发了mouseover事件的对象。
function(e)中的参数e是事件对象,根据事件的不同,具有对应的子属性,比如键盘事件和鼠标事件等,你的代码中对应的是鼠标事件。
.click(function(event) 中的event ,是什么意思?
请各位大哥详细分析?
click(function(event) 中的event是事件对象的意思,event这里因为是单击,就是mouseEvent(鼠标事件)。
event.preventDefault();这是阻止默认事件,比如在浏览器中点击右键,会弹出一个菜单,加了这句之后就不会弹出这个菜单了,还有单击链接,会跳到相应的地址,加了这句就不会跳转了,这句等效于return false。
使用闭包的注意点
1.对捕获的变量只是个引用,不是复制;
2.父函数每调用一次,都会创建一个新的词法环境,会产生不同的闭包;
3.循环中问题
应用闭包
this的三个要点
1.this的指向是什么?
指向对象
2.this可以书写在哪里?
可以写在全局,也可以写在函数里
三种写在函数里的方式:
2.1 this可变
2.2 this可变
2.3 this不可变
3.this指向对象的原则
3.1 运行时决定
3.2 运行在全局时,永远指向window;
运行在函数时,函数是谁调用的就是指向谁;