Javascript 陷阱 window全局對象
更新時間:2008年11月26日 12:31:22 作者:
ff和ie6下都是同樣的運行結果,看來不是bug,那究竟是為什么呢?
注意到:對象方法訪問其對象的屬性時|必須|加以this.(和java不一樣).
function Test(){
this.name='Test';
var name=2;
this.show=function(){
alert(name);
alert(this.name);//顯示名字
}
}
var test=new Test();//通過構造器創(chuàng)建一個對象
test.show();//輸出2和'Test' ,說明對象方法訪問其屬性時必須加this.
function Test2(){
this.name='Test2';
this.show=function(){
alert(name);
alert(this.name);
}
}
Test();//直接調(diào)用Test();
var test2=new Test2();
test2.show();//輸出了Test,Test2,很奇怪啊,name問什么有值了,而且怎么會是'Test',bug?
alert(name);
window.show(); //輸出2,test;怎么會有show函數(shù)呢,難道是bug
//依次輸出2,Test;Test,Test2;Test;2,Test
// ff和ie6下都是同樣的運行結果,看來不是bug,那究竟是為什么呢?
// 注意到:對象方法訪問其對象的屬性時|必須|加以this.(和java不一樣).
// 整個頁面是默認的是|window|對象,那么定義的函數(shù),默認就是window對象的方法。
//直接直接調(diào)用函數(shù)時,相當于通過window.調(diào)用方法,那么方法內(nèi)部的this自然就是\
//window對象,this.name='Test'就是為window對象加了一個屬性.
// 那么當方法局部作用域內(nèi)未定義name且調(diào)用alert(name),就相當于調(diào)用alert(window.name);
/*啊,代碼混亂了。這看起來像一個很嚴重的陷阱??!*/
this.name='Test';
var name=2;
this.show=function(){
alert(name);
alert(this.name);//顯示名字
}
}
var test=new Test();//通過構造器創(chuàng)建一個對象
test.show();//輸出2和'Test' ,說明對象方法訪問其屬性時必須加this.
function Test2(){
this.name='Test2';
this.show=function(){
alert(name);
alert(this.name);
}
}
Test();//直接調(diào)用Test();
var test2=new Test2();
test2.show();//輸出了Test,Test2,很奇怪啊,name問什么有值了,而且怎么會是'Test',bug?
alert(name);
window.show(); //輸出2,test;怎么會有show函數(shù)呢,難道是bug
//依次輸出2,Test;Test,Test2;Test;2,Test
// ff和ie6下都是同樣的運行結果,看來不是bug,那究竟是為什么呢?
// 注意到:對象方法訪問其對象的屬性時|必須|加以this.(和java不一樣).
// 整個頁面是默認的是|window|對象,那么定義的函數(shù),默認就是window對象的方法。
//直接直接調(diào)用函數(shù)時,相當于通過window.調(diào)用方法,那么方法內(nèi)部的this自然就是\
//window對象,this.name='Test'就是為window對象加了一個屬性.
// 那么當方法局部作用域內(nèi)未定義name且調(diào)用alert(name),就相當于調(diào)用alert(window.name);
/*啊,代碼混亂了。這看起來像一個很嚴重的陷阱??!*/
相關文章
JavaScript利用時間分片實現(xiàn)高性能渲染數(shù)據(jù)詳解
為了豐富我們的知識體系,我們有必要了解并清楚當遇到大量數(shù)據(jù)時,如何才能在不卡主頁面的情況下渲染數(shù)據(jù),以及其中背后的原理,本文介紹了如何使用時間分片的方式來渲染大量數(shù)據(jù),感興趣的可以了解下2023-05-05layui框架table 數(shù)據(jù)表格的方法級渲染詳解
今天小編就為大家分享一篇layui框架table 數(shù)據(jù)表格的方法級渲染詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08JavaScript實現(xiàn)微信紅包算法及問題解決方法
這篇文章主要介紹了JavaScript實現(xiàn)微信紅包算法及遇到的問題解決方法,需要的朋友可以參考下2018-04-04