javascript难点之二:有奶就是娘的this

本文深入解析JavaScript中的this关键字,探讨其动态性和复杂性,以及如何根据执行上下文确定其所指向的具体对象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

接下来谈谈js里的一个非常让人费解的关键字:this
之所以让人费解,可能是应为先入为主的关系。从面向过程的编程到面向对象的编程,class和object让无数习惯面向过程的人挣扎了许久,即使是从java,c++基于类的继承到js基于对象的继承,也让我们一头雾水。学会了严谨的高级语言,反而对js这个太随便的小流氓无从下手,它的种种行为看在眼里匪夷所思,长着和别人一样的嘴脸,但是却做着不一样的勾当。众所周知,this在JAVA里只是只带对象本身或者说是类本身,但是在js里,同样的this,你却闹不明白它到底在代表谁,而且同一个this,此时代表A,彼时可能就代表B了。这就是所谓的动态语言么?编程的随意性的增加看似可以变的功能强大,但是,越随意越是不好管理,就像C的指针,用的好可以提高性能,但是一点小错误也是致命的,代码可读性直线下降。这不应该是编程语言的趋势。
闲话不多说了,看看this到底怎么回事。
This在JS标准里的定义:对于每个执行上下文,都有一个 this 值与其相关联。在控制进入执行上下文时,根据调用者和被执行代码的类型决定这个值。与执行上下文相关联的 this 值是非可变的。
执行上下文:当控制器转换到 ECMAScript 可执行代码时,控制器就进入了执行上下文。活动的执行上下文组成一个逻辑上的栈。逻辑栈上的顶层执行上下文即正在运行的执行上下文。
进入执行上下文:每个函数和构造器调用都要进入一个新的执行上下文,即使是函数在递归地调用自身。每次返回都会退出执行上下文。未被 catch 的异常抛出有可能退出一个或多个执行上下文。当控制进入执行上下文时,创建并初始化作用域链,进行变量初始化,并决定 this 值。作用域链的初始化,变量的初始化和 this 值的决定取决于进入的代码类型。
通过以上的一系列名词定义知道,this到底代表什么,取决于此时此刻哪一个对象在用这个执行上下文。
function who(){
alert(this.name);
}
这个函数就是一个简单的执行上下文。直接输出who()的话,调用这个函数的对象是window,而window里没有name这个属性, 所以窗口弹出的是空白,继续写一个对象
var me = {name:"haha"};
me.who = who;//把who方法复制给me里的who属性
me.who();//调用这个me 的who方法
这时候,输出为haha。
其他情况也类似,如果学过call方法的话,下面的就比较容易理解了,如果还没学过,可以看我下一篇文章,<javascript难点之三:没有见过的怪物call>。
who.call(me)输出也为haha,这时候,调用这个方法的对象是me。
最后总结一下,在java等语言中,this指代的就是对象自己,this在那个类里声明的,就指代哪个类和他的对象。JS中的this虽然从本质上来说,也是指代对象,但是不同的是,这个this到底是指代哪个对象,这要更具实际情况来判断,简单的说,就是找到执行this所在的上下文的那个具体的对象,如果没有这样定义的对象,默认是浏览器window对象在执行上下文。记住this代表了一个对象就对了,然后就是撕下this这个面具,看看面具后面到底是哪个对象在操纵的过程,啊,有点福尔摩斯的感觉了。
内容概要:该研究通过在黑龙江省某示范村进行24小时实地测试,比较了燃煤炉具与自动/手动进料生物质炉具的污染物排放特征。结果显示,生物质炉具相比燃煤炉具显著降低了PM2.5、CO和SO2的排放(自动进料分别降低41.2%、54.3%、40.0%;手动进料降低35.3%、22.1%、20.0%),但NOx排放未降低甚至有所增加。研究还发现,经济性和便利性是影响生物质炉具推广的重要因素。该研究不仅提供了实际排放数据支持,还通过Python代码详细复现了排放特征比较、减排效果计算和结果可视化,进一步探讨了燃料性质、动态排放特征、碳平衡计算以及政策建议。 适合人群:从事环境科学研究的学者、政府环保部门工作人员、能源政策制定者、关注农村能源转型的社会人士。 使用场景及目标:①评估生物质炉具在农村地区的推广潜力;②为政策制定者提供科学依据,优化补贴政策;③帮助研究人员深入了解生物质炉具的排放特征和技术改进方向;④为企业研发更高效的生物质炉具提供参考。 其他说明:该研究通过大量数据分析和模拟,揭示了生物质炉具在实际应用中的优点和挑战,特别是NOx排放增加的问题。研究还提出了多项具体的技术改进方向和政策建议,如优化进料方式、提高热效率、建设本地颗粒厂等,为生物质炉具的广泛推广提供了可行路径。此外,研究还开发了一个智能政策建议生成系统,可以根据不同地区的特征定制化生成政策建议,为农村能源转型提供了有力支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值