以人为镜,可知得失,看来这句话是很有道理的。
Demo 1 :
如果是一个全局的function,则this相当于window对象,在function里定义的各种属性或者方法可以在function外部访问到,前提是这个function需要被调用。
复制代码 代码如下:
<script type="text/javascript">
//在function中使用this
function a() {
if (this == window) {
alert("this == window");
this.fieldA = "I'm a field";
this.methodA = function() {
alert("I'm a function ");
}
}
}
a(); //如果不调用a方法,则里面定义的属性会取不到
alert(window.fieldA);
methodA();
</script>
Demo 2 :
如果使用new的方式去实例化一个对象,则this不等于window对象,this指向function a的实例
复制代码 代码如下:
<script type="text/javascript">
//在function中使用this之二
function a() {
if (this == window) {
alert("this == window");
}
else {
alert("this != window");
}
this.fieldA = "I'm a field";
}
var b = new a();
alert(b.fieldA);
</script>
Demo 3 :
使用prototype扩展方法可以使用this获取到源对象的实例,私有字段无法通过原型链获取
复制代码 代码如下:
<script type="text/javascript">
//在function中使用this之三
function a() {
this.fieldA = "I'm a field";
var privateFieldA = "I'm a var";
}
a.prototype.ExtendMethod = function(str) {
alert(str + " : " + this.fieldA);
alert(privateFieldA); //出错
};
var b = new a();
b.ExtendMethod("From prototype");
</script>
Demo 4 :
不管是直接引用function,还是实例化一个function,其返回的闭包函数里的this都是指向window
复制代码 代码如下:
<script type="text/javascript">
//在function中使用this之四
function a() {
alert(this == window);
var that = this;
var func = function() {
alert(this == window);
alert(that);
};
return func;
}
var b = a();
b();
var c = new a();
c();
</script>
Demo 5 :
在HTML中使用this,一般代表该元素本身
复制代码 代码如下:
<div onclick="test(this)" id="div">Click Me</div>
<script type="text/javascript">
function test(obj) {
alert(obj);
}
</script>
Demo 6 :
在IE和火狐(Chrome)*册事件,this分别指向window和元素本身
复制代码 代码如下:
<div id="div">Click Me</div>
<script type="text/javascript">
var div = document.getElementById("div");
if (div.attachEvent) {
div.attachEvent("onclick", function() {
alert(this == window);
var e = event;
alert(e.srcElement == this);
});
}
if (div.addEventListener) {
div.addEventListener("click", function(e) {
alert(this == window);
e = e;
alert(e.target == this);
}, false);
}
</script>
以上就是我总结的this在javascript中的不同应用场景,可能还有其他的情况不一而足,以后发现了会补充进来。
相关推荐:
优方法-高效生活与工作的秘密武器,钻石营销推广方案
seo渠道优化是什么,seo渠道推广怎么做 ,ai121333
AI一键生成文章免费:革新写作方式,提升创作效率
线上AI写作免费一键生成,轻松提升写作效率,解放创作思维
ChatGPT页面无法下拉?禁用浏览器扩展,轻松解决!,imba 1.6 ai
什么是神马排名?让你的网站脱颖而出,轻松占据搜索引擎的C位!,乳山网站优化关键词排名
什么叫改写-解读“改写”背后的艺术与技巧,网站制作建设模板图片
互联网留痕:数字时代的隐形轨迹与自我管理,灯塔网站推广包年多少钱
创作新时代:自动生成文章AI的魅力与未来
怎么用AI写出令人惊叹的文章?轻松搞定写作难题!
为什么选择B站VIP?让你畅享更丰富的视听体验,小门类网站seo
为什么seo推广那么多,seo推广难吗 ,东莞ai听译平台
优化提长:让企业效能提升的秘密武器,长沙网站建设创意
SEO但是,这些常见误区你真的知道吗?,凤岗网站建设开发
SEO本站:提升网站流量与排名的秘密武器,荆门专业的抖音seo
AI撰写率:让创作变得更高效,助力内容产业腾飞,人力ai
自动写文章AI:高效创作工具,开启写作新纪元
什么是SEO优化方案,seo的优化方案 ,ai emorobot
怎么降低文章的AI生成率:打造更真实、更有价值的内容
ChatGPT显示无法加载网站是怎么回事?解决方法!,glow将军ai
用AI写的文章算原创吗?真相揭示,带你深度思考!
优化高效率:提升个人与企业竞争力的关键,安康网站推广咨询
用AI生成的文章算原创吗?深度解析AI写作背后的秘密
高效创作新时代AI文案速写工具,让创作更轻松
seo网站是什么东西,seo网站是什么东西啊 ,ai锯齿消失
怎么用AI写文章:高效创作的秘诀
SEO地位:如何提升你的网站排名与曝光度,抢占市场先机,微营销网络推广
优化百:开启数字时代的智能营销新时代,湘潭seo优化报价表
SEO用户:如何为您的网站带来持续流量和转化,惠州网站推广哪个好
为什么做酒店seo,为什么做酒店 ,ai uehara下载
SEO有意:如何通过优化策略提升网站排名与流量,天津政府智慧网站建设
AI人工智能文章生成平台,释放创作无限可能
SEO发明:引领数字时代营销革命的力量,速卖通外贸推广网站
为什么seo吸引人,为什么seo吸引人呢 ,ai路径查找器绘制树
AI缩写文本:助力智能生活的革新力量,ai智能写作生成神器下载
SEO赚钱:如何通过SEO技能在网络上实现财富自由,网站怎么建设推广平台
GPT-3模型下载:开启智能时代的无限可能,ai走入
ChatGPT免费订阅的使用限制:其潜力与挑战,ai辅助线无法对齐画板
GPT在什么时候被人熟知的?从技术突破到广泛应用的背后故事,ai商业新思维ai课程
seo诊断什么意思,seo诊断a5 ,约瑟夫ai
乘风SEO-引领企业互联网时代的腾飞之路,南昌b站关键词排名优化贵不贵
SEO表述:如何通过精准优化让你的内容脱颖而出,江阴网站建设怎么样啊
互联网资源的无限潜力:如何利用数字世界为个人和企业创造价值,信阳网站建设正规公司
SEO才能:提升网站排名,突破网络营销的核心竞争力,南宁本地seo营销公司
AI写作技巧,让创作事半功倍!
SEO针对中小企业的增长潜力:如何通过精准优化抢占市场先机,网络推广和营销就选y火10星评价
seo管理系统是什么,seo网站管理 ,过度圆ai
360优化关键词-提升网站流量与排名的秘密武器,美拍ai
AI免费写文章:让创作变得轻松高效
SEO优化攻略:如何通过精准策略提升网站排名与流量,aI ow翻译