實例1:第一種調用this的方法——以函數形式調用。它代表全局對象window
代碼如下:
<script type="text/javascript">
function t(){
alert(this);//這裡this表示window對象。
}
t();
</script>
實例2:第二種調用this的方法——以對象屬性的形式調用。它代表該對象。實例中onclick為p元素對象的屬性
代碼如下:
<html>
<head>
<script type="text/javascript">
function t(){
alert(this);
this.style.background = 'green';
}
window.onload = function(){
document.getElementById('eng').onclick = t;
}
</script>
</head>
<body>
<p id="eng">abcd</p>
</body>
</html>
實例3:第三種調用this的方法——以構造器的方式調用。
代碼如下:
<script type="text/javascript">
function dog(){
this.legs = 4;
this.bark = function(){
alert("汪汪...");
}
}
var wangcai = new dog();//創建對象的方式。new 函數名();
wangcai.bark();
</script>
說明:
(1)如果直接調用dog()函數,而不是以創建對象的方式調用,則相當於第一種調用了,即this代表著全局對象window。
(2)js中沒有類的概念,但是有對象的概念;
(3)對象的創建可以采用var = objName{name:'abc',age:40}這種方式創建,也可以通過構造函數來創建;
(4)什麼是構造函數:當一個普通函數以“new 函數名()”的方式調用時,此函數就充當構造函數。
實例4:第四種調用this的方法——call和apply方式
代碼如下:
<html>
<head>
<script type="text/javascript">
window.onload = function(){
var d = document.getElementById('hi');
if(hi.addEventListener){//chrome 和 firefox
hi.addEventListener('click',function(){alert(this.id)},false);//w3c模型中,this指向DOM對象。this.id結果為hi
}else{// ie
hi.attachEvent('onclick',function(){alert(this.id)});//ie8及ie8以下,這裡this指向全局對象window。結果this.id結果為undefined
}
}
</script>
</head>
<body>
<p id="hi">hello world</p>
</body>
</html>