this指向问题
### this指向问题 1. 普通函数 ```js var name = '张三' function getPersonName() { console.log(this.name) } getPersonName() //张三 //严格模式下 抑制this "use strict"; var name = "张三" function getPersonName() { console.log(this.name) } getPersonName() // Cannot read property 'name' of undefined ``` 2. 普通对象 ```js var obj = { name: '张三', getPersonName:function() { console.log(this.name) } } obj.getPersonName(); //this指向obj var fn=obj.getPersonName; fn(); // 此时调用 fn 方法,this指向window 对象 ``` 3. 构造函数 ```js function Person(name,age) { this.name = name; this.age = age; } var p = new Pweson('张三',19); console.log(p.name) //this 指向了该构造函数实例化出来的对象。 //如果构造函数显式的返回一个对象,那么 this 则会指向该对象。 function Person(name,age) { this.name = name; this.age = age; this.sex="男"; return { sex : '女' } } var p = new Person("张三",19); console.log(p.sex) //'女' //如果该函数不用 new 调用,当作普通函数执行,那么 this 依然指向全局对象。 ``` 4. call()或apply() > 通过调用函数的 call() 或 apply() 方法可动态的改变 this 的指向。
本文来自博客园,作者:zhupan,转载请注明原文链接:https://www.cnblogs.com/zhupanpan/p/11375573.html
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术