// 在html中直接调用
// console.log(this) //Window
//在function中调用
// function a(){
// let b = "aaaaa"
// console.log(this.b) //指向Window 结果为undefined
// }
// a()
// 在对象中调用
// this是对象自身
// let user = "哈哈哈"
// var o = {
// user:"追梦子",
// fn:function(){
// console.log(this.user); //追梦子
// }
// }
// o.fn();
// 对象的属性 → 调用
// 对象的属性是什么,则this指的是什么。
// this指的是直接调用的那个环境。
// var o = {
// user:"追梦子",
// fn:function(){
// console.log(this.user); //追梦子
// }
// }
// window.o.fn(); // 并不指向window
// var o = {
// a:10,
// b:{
// a:12,
// fn:function(){
// console.log(this.a); //12
// }
// }
// }
// o.b.fn(); // 指向b 对象的属性是什么,则this指的是什么
// var o = {
// a:10,
// b:{
// a:12,
// fn:function(){
// console.log(this.a); //undefined
// console.log(this); //window
// }
// }
// }
// var j = o.b.fn;
// j(); // 指向window,虽然看起来貌似是来自b,但实际调用是全局环境。
// 作为构造函数→被调用
// new:会改变this的指向,把this指向新创建的对象
// 所以其实是用新对象去创建函数的实例,那么调用的其实是新对象
// function Fn(){
// this.user = "追梦子";
// }
// var a = new Fn(); // 此时指a
// console.log(a.user); //追梦子
// 构造函数→包含return的时候
// return对象:this为自己 则指向函数自己
// function fn()
// {
// this.user = '追梦子';
// return {};
// }
// var a = new fn();
// console.log(a.user); // 无法赋值:undefined
// return其他:正常
// function fn()
// {
// this.user = '追梦子';
// return 1;
// }
// var a = new fn();
// console.log(a.user); // 正确赋值:追梦子
简述 Javascript 中 this 的指向有哪些
猜你喜欢
转载自blog.csdn.net/wanghongpu9305/article/details/113198107
今日推荐
周排行