ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

JS 构造函数与原型中 this 指向详解:new、普通调用、原型方法完整实例

JS 构造函数与原型中 this 指向详解:new、普通调用、原型方法完整实例 1、使用 new 调用构造函数当你用 new 来调用一个函数时JS 会做三件事创建一个新对象 obj。把构造函数的 this 指向这个新对象 obj。执行构造函数体内的代码通常会给 this 添加属性和方法。默认返回 this即新创建的对象。示例function Person(name) { this.name name; this.sayHello function() { console.log(Hello, my name is ${this.name}); } } const p1 new Person(Alice); p1.sayHello(); // Hello, my name is Alice这里this 指向 p1即新创建的对象。2、不使用 new 调用构造函数如果直接调用函数而不使用 newthis 指向调用时的环境严格模式 (‘use strict’)this 为 undefined非严格模式this 为全局对象浏览器中是 window示例function Person(name) { this.name name; } Person(Bob); // 普通调用 console.log(window.name); // Bob非严格模式3、构造函数返回对象如果构造函数显式返回一个对象那么 new 会返回这个对象而不是 thisfunction Person(name) { this.name name; return { age: 30 }; } const p new Person(Alice); console.log(p); // { age: 30 }如果返回的是非对象如字符串、数字this 仍然被返回。4、构造函数和原型方法如果你在 prototype 上添加方法这些方法属于共享的原型对象但 this 的指向依然取决于调用者。示例function Person(name) { this.name name; // 实例属性 } // 原型方法 Person.prototype.sayHello function() { console.log(Hello, my name is ${this.name}); }; const p1 new Person(Alice); p1.sayHello(); // Hello, my name is Alice这里sayHello 是 Person.prototype 上的方法。当你通过 p1.sayHello() 调用时this 指向 **调用它的对象 p1。this 的本质在 JS 中函数执行时的 this 由调用方式决定对象调用obj.fn() → this 指向调用者 obj普通函数调用fn() → 严格模式下 undefined非严格模式下指向全局对象构造函数调用new Fn() → this 指向新对象箭头函数 → this 继承自定义函数外层的作用域所以即使方法在原型上this 依然是调用它的实例对象。示例对比function Person(name) { this.name name; } Person.prototype.sayHello function() { console.log(this.name); }; const p1 new Person(Alice); const p2 new Person(Bob); p1.sayHello(); // Alice p2.sayHello(); // Bob const f p1.sayHello; f(); // 严格模式下 undefined, 非严格模式下 window.name说明原型方法和实例方法本质上都是函数。this 并不固定在原型上而是调用它的对象。5、总结构造函数原型方法的 this 指向调用它的对象实例。如果直接把方法取出来调用函数调用this 不再指向实例而受严格模式或全局环境影响。原型方法适合共享函数避免每个实例都重复创建同一个函数。文章来源网上侵权请联系博主如何系统学习网络安全网络安全作为数字时代的核心技术基石已成为保障各行业安全稳定运行的坚实屏障。筑牢网络安全的防线掌握先进的防护策略和技能正上升为国家与企业发展的战略优先级。构建稳固的网络安全能力是一个体系的工程需要从夯实基础理论出发持续深化到攻防对抗与应急响应的实战层面。如果你是准备学习网络安全黑客或者正在学习我可以把我自用的360独家内部资料分享给你包含以下内容你应该能用得上①网络安全学习路线②20份渗透测试电子书③安全攻防357页笔记④50份安全攻防面试指南⑤安全红队渗透工具包⑥网络安全必备书籍⑦100个漏洞实战案例⑧安全大厂内部视频资源⑨历年CTF夺旗赛题解析一、网络安全黑客学习路线网络安全黑客学习路线形成网络安全领域所有的知识点汇总它的用处就在于你可以按照上面的知识点去找对应的学习资源保证自己学得较为全面。二、网络安全教程视频我们在看视频学习的时候不能光动眼动脑不动手比较科学的学习方法是在理解之后运用它们这时候练手项目就很适合了。三、网络安全CTF实战案例光学理论是没用的要学会跟着一起敲要动手实操才能将自己的所学运用到实际当中去这里带来的是CTFSRC资料HW资料毕竟实战是检验真理的唯一标准嘛~四、网络安全面试题最后我们所有的作为都是为就业服务的所以关键的临门一脚就是咱们的面试题内容所以面试题板块是咱们不可或缺的部分这里我给大家准备的就是我在面试期间准备的资料。网安其实不难难的是坚持和相信自己我的经验是既然已经选定网安你就要相信它相信它能成为你日后进阶的高效渠道这样自己才会更有信念去学习才能在碰到困难的时候坚持下去。机会属于有准备的人这是一个实力的时代。人和人之间的差距不在于智商而在于如何利用业余时间只要你想学习什么时候开始都不晚不要担心这担心那你只需努力剩下的交给时间这份完整版的网络安全学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进