扫码关注官方订阅号
function Card(num,suit){
this.num = num; this.suit = suit;
}这里的this指向什么呢,最好举个例子
走同样的路,发现不同的人生
this的指向不是在声明的时候确定的而是在调用的时候被定义的有这么几种情况
1. 普通函数调用,this为全局对象或是undefined 2. 作为对象的方法,this为那个对象 3. new 表达式,this为以该函数为原型的新创建的对象 4. 使用 apply/call指定 this 5. 用bind绑定固定的this 6. 事件处理函数中的this是当前的触发事件的DOM元素(event.currentTarget)
看你怎么用,this只有在你使用的时候才能确定其指向
function Card(num,suit){ this.num = num; this.suit = suit; }
创建对象
var obj=new Vard(1,2)
this指向一个以Card.prototype为原型的空对象
Card(1,2)
this指向 window对象
var obj={} Card.call(obj,2,3)
this指向obj对象
var a = new Card(1,2); a.num ; // 1 a.suit ;// 2
this指向你new出来的a
这里的 this 指向执行时所在的对象
比如,立即函数:
Card(2, 3)
这里的 this 指向 window,(非严格模式),
再比如,如果是对象的方法,
var obj = {}; obj.card = Card; obj.card();
这个时候 this 指向 obj 啦。
call apply 还能指定 this 的指向。
所以要函数执行的时候,才能得知 this 的指向。
以上的都说的差不多了,我再补充一个ES6中箭头函数的this指向:
let person = { name: "galler", speak: ()=> { console.log(this);//window console.log(this.name); //"" } }; person.speak();
函数本身是没有this的,只能向外找this继承,找到后发现this指向window(浏览器环境),而window下没有name属性,所以this.name = ""(空)
http://mp.weixin.qq.com/s/DZp...写的相当的不错,总结的很好
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
this的指向不是在声明的时候确定的而是在调用的时候被定义的有这么几种情况
看你怎么用,this只有在你使用的时候才能确定其指向
创建对象
this指向一个以Card.prototype为原型的空对象
this指向 window对象
this指向obj对象
this指向你new出来的a
这里的 this 指向执行时所在的对象
比如,立即函数:
这里的 this 指向 window,(非严格模式),
再比如,如果是对象的方法,
这个时候 this 指向 obj 啦。
call apply 还能指定 this 的指向。
所以要函数执行的时候,才能得知 this 的指向。
以上的都说的差不多了,我再补充一个ES6中箭头函数的this指向:
函数本身是没有this的,只能向外找this继承,找到后发现this指向window(浏览器环境),而window下没有name属性,所以this.name = ""(空)
http://mp.weixin.qq.com/s/DZp...
写的相当的不错,总结的很好