最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺談JavaScript中的this指針和引用知識

 更新時間:2016年08月05日 10:45:28   作者:xuht_nb  
this是javascript的一個關(guān)鍵字,隨著函數(shù)使用場合不同,this的值會發(fā)生變化。但是總有一個原則,那就是this指的是調(diào)用函數(shù)的那個對象。接下來通過本文給大家介紹js中的this指針和引用,非常不錯,需要的朋友參考下

this是javascript的一個關(guān)鍵字,隨著函數(shù)使用場合不同,this的值會發(fā)生變化。但是總有一個原則,那就是this指的是調(diào)用函數(shù)的那個對象。

this指針在傳統(tǒng)OO語言中,是在類中聲明的,表示對象本身.在JavaScript中,this表示當(dāng)前上下文,即調(diào)用者的引用

********this永遠(yuǎn)指向的是(函數(shù)對象)的所有者

this和全局對象:

var a = 1; 
function foo(){ 
var b = 2; 
console.log(this.a+b);//3 
} 
foo(); 
//foo函數(shù)所有者是window,全局函數(shù)中this指代的是window對象(********除非使用new,call,apply方法來改變this的指代關(guān)系)

this和對象:

var person = { 
name:'Theo Wong', 
gender:'male', 
getName:function(){ 
console.log(this.name);//getName函數(shù)所有者是person對象 
} 
}; 
person.getName();

嵌套函數(shù)中的this

var myObject = { 
func1:function() { 
console.log(this); //myObject 
var func2=function() { 
console.log(this); //window 
var func3=function() { 
console.log(this); //window 
}(); 
}(); 
} 
}; 
myObject.func1(); 
//在嵌套函數(shù)中,由于嵌套函數(shù)的執(zhí)行上下文是window,所以this指代的是window對象,其實這是ECMA-262-3的一個bug,在最新的ECMA-262-5中已經(jīng)修復(fù)

事件處理中的this:

var showValue = function(){ 
alert(this.value); 
};

1.<input id="test" type="text" />

通過dom.onclick綁定事件,document.getElementById('test').onclick = showValue;

此時showValue是作為dom的onclick方法被調(diào)用的,所以它的this應(yīng)該指代的是dom對象,而不再是window對象

2.寫在html標(biāo)簽內(nèi),<input id="test" type="text" onclick="showValue();" />

當(dāng)點擊dom時,我們獲取不到正確的this,此時的this指代的是window對象,因為window對象中沒有定義value的值,所以獲取不到this.value

***此時的不是將showValue函數(shù)賦值給dom對象的onclick,而是引用,此時function()函數(shù)所有者是window

document.getElementById('test').onclick = function(){
showValue();
}

通過addEventListener/attachEvent綁定事件監(jiān)聽

<input type="text" id="test" /> 
<script type="text/javascript"> 
var dom = document.getElementById('test'); 
id = 'window'; 
function test(){ 
alert(this.id); 
} 
dom.addEventListener?dom.addEventListener('click',test,false):dom.attachEvent('onclick',test); 
//addEventListener test 
//attachEvent window 
</script>
//這種綁定事件監(jiān)聽的方式,attachEvent this是window對象,而addEventListener則是dom對象的

this和構(gòu)造:

function obj(name,age){ 
this.name = name; 
this.age = age; 
this.fun = function(){ 
alert(this.name); 
}; 
} 
var obj = new obj('xht',18);//this就指這個新對象,new 改變this的指代關(guān)系 
obj.fun();//xht

this和call

//定義一個人,名字為jack 
var jack = { 
name : "jack", 
age : 26 
} 
//定義另一個人,名字為abruzzi 
var abruzzi = { 
name : "abruzzi", 
age : 26 
} 
//定義一個全局的函數(shù)對象 
function alertName(){ 
return this.name; 
} 
//設(shè)置alertName的上下文為jack, 此時的this為jack 
alert(alertName.call(jack)); 
//設(shè)置alertName的上下文為abruzzi,此時的this為abruzzi 
alert(alertName.call(abruzzi));

引用是一個比較有意思的主題,跟其他的語言不同的是,JavaScript 中的引用始終指向最終的對象,而并非引用本身

var obj = {}; // 空對象 
var ref = obj; // 引用 
obj.name = "objectA" ; 
alert(ref . name); //ref 跟著添加了 name 屬性 
obj = ["one" , "two" , "three"]; //obj 指向了另一個對象 ( 數(shù)組對象 ) 
alert(ref.name); //ref 還指向原來的對象 
alert(obj.length ); //3 
alert(ref.length);

obj 只是對一個匿名對象的引用,所以, ref 并非指向它.

引用指向的只能是具體的對象,當(dāng)具體對象改變的時候,引用還是引用原來的對象,而不是改變后的對象。

以上所述是小編給大家介紹的JavaScript中的this指針和引用知識,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

最新評論

中宁县| 吴桥县| 兖州市| 青河县| 临沂市| 兴国县| 安吉县| 海阳市| 皮山县| 和政县| 百色市| 普定县| 泗水县| 从化市| 铜梁县| 博白县| 泾源县| 潮州市| 蒙自县| 普兰县| 崇阳县| 阿克陶县| 阿巴嘎旗| 西盟| 嘉荫县| 千阳县| 沙雅县| 聂荣县| 湄潭县| 广丰县| 章丘市| 齐齐哈尔市| 航空| 高青县| 丽江市| 察隅县| 明星| 枝江市| 密云县| 吐鲁番市| 安顺市|