博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
趣谈JavaScript中面向对象的this
阅读量:7090 次
发布时间:2019-06-28

本文共 820 字,大约阅读时间需要 2 分钟。

嘿,大家好,真的是又到了本人分享自己学习JavaScript的心得了,这次呢就和大家来聊一聊JavaScript中一个比较难的问题,这个问题相信大家在学JavaScript中都碰到过,就是面向对象中的this指向问题,废话不多说,先看下一段代码:

function test(){this.x = 1;    alert(this.x);}test();复制代码

这题只要大家了解面向对象的话,都知道输出的结果是1;

但是为了证明this是全局对象,我将对代码做一些改变;

var x = 1;  function test(){    alert(this.x);  }  test()复制代码

这一题输出的结果还是1.

运行结果还是1。再变一下:

var x = 1;  function test(){    this.x = 0;  }  test();alert(x);复制代码

是的,这次结果可以看出来输出的0;

This对象是在运行时基于函数的执行环境绑定的:在全局函数中,this等于window,而当函数作为某个对象的方法调用时,this等于那个对象。不过,匿名函数的执行环境具有全局性,因此其this通常指向window。但是由于闭包编写方式不同,结果没有那么明显。

别忘了:有一个总的原则,那就是this指的是,调用函数的那个对象。

这里定义了一个函数(匿名函数,并把值赋给someFunction)然后立即调用了它(在函数名称后面添加一对括号)。

下面来看另一种不加括号的情况:

function(){//dosomething}();例:function (){alert("Hi")}();复制代码

这段代码会导致语法错误,是因为javascript将function关键字当作一个函数声明的开始,而函数声明后面不能跟圆括号。而表达式后面可以跟圆括号,要将函数声明变成表达式,只要向下面那样给它加一对圆括号即可。

转载地址:http://csiql.baihongyu.com/

你可能感兴趣的文章
如何解决““.NET研究”呈现控件时出错”的问题
查看>>
艾伟_转载:超级简单:ASP.NET Localization (本地化,多语言)
查看>>
DirectX11 SDK 下载地址
查看>>
solr4.5分组查询、统计功能介绍
查看>>
Myeclipse常见快捷键及配置
查看>>
【PM面试题】如果让你创业,你会选择什么?
查看>>
python 中range numpy.arange 和 numpy.linspace 的区别
查看>>
深入非聚集索引:楼梯SQL Server二级索引
查看>>
Python之路【第一篇】:Python基础(4)
查看>>
反编译Android APK及防止APK程序被反编译
查看>>
利用Field获取图片
查看>>
android使用vitamio
查看>>
C++的强制类型转换
查看>>
android基础学习一:ImageView修改颜色灰度
查看>>
go语言学习--go中godep的使用小结
查看>>
两个矩阵相乘的源程序
查看>>
ActiveMQ 控制面板信息含义
查看>>
【Flatten Binary Tree to Linked List】cpp
查看>>
大一ACM心得总结
查看>>
Code Force 429B Working out【递推dp】
查看>>