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

JS函數(shù)this的用法實例分析

 更新時間:2015年02月05日 14:57:31   作者:magicfly9527  
這篇文章主要介紹了JS函數(shù)this的用法,實例分析了javascript中this的功能、定義及相關使用技巧,需要的朋友可以參考下

本文實例講述了JS函數(shù)this的用法。分享給大家供大家參考。具體如下:

在js中寫函數(shù)時,很多用到this. this究竟是什么,this是個關鍵字,是個指針,指向執(zhí)行環(huán)境作用域,也稱之為上下文。
先說下函數(shù)吧,個人理解是函數(shù)是在語言中重復調(diào)用的代碼塊.
在JS里,把函數(shù)賦值給對象的屬性時,稱之為方法
如:

var m={};
m.title='title';
m.show=function(){
alert(this.title)
}
m.show()

就是把函數(shù)作為對象m的方法來調(diào)用
這樣的話,this指向的就是m這個對象.

直接調(diào)函數(shù)名的叫函數(shù):

var a=1212;
function show(){
alert(a)//1212
}
show()// 1212

在全局環(huán)境里,可以把全局變量理解為window的屬性,全局函數(shù)為window的方法
看下面的例子:

var m ={};
m.id='mmm';
m.show=function(){
  alert(this.id);
}
var a={};
a.id='aaa';
a.show=m.show;
a.show(); //aaa

a.show=m.show;  先理解這句話,因為函數(shù)是個對象,
m.show=function(){
  alert(this.id)
}

這表達式相當于a.show 與m.show同時引用指向

function(){
  alert(this.id)
}

其實相當于

a.show=function(){
  alert(this.id)
}

所以調(diào)用a.show()時,this指向的是a對象,
再看以下一個栗子

var m ={};
m.id='mmm'
m.show=function(){
  alert(this.id)
}
var a={}
a.id='aaa'
a.show=function(){
  m.show()
};
a.show(); //mmm

所以調(diào)用a.show()時,相當于調(diào)用了m.show()的方法,所以this.指向的是m對象。

再看以下一個例子,一開始還是不很懂

var color='red';
var app = {};
app.color="green";
app.paint=function(node){
node.style.color=this.color;
  alert(this.color);
}
function findNode(callback){
  var btn =document.querySelector('.btn');
  callback(btn);//傳進來,
}
findNode(app.paint);
alert(this.color); //red 而不是green

函數(shù)傳參時,是按值傳參的,而不是引用

所以findNode(app.paint);傳進來時,其實是

function(node){
  node.style.color=this.color;
  alert(this.color);
}

的引用,又因為findNode是全局定義的,所以this指向WINDOW OR UNDEFINED;

關于傳參,按值傳遞過去的

function show(a){
  alert(a)
}

參數(shù)為基本數(shù)據(jù)類型時好理解

var b=10;
show(b)//alert(10);

至于對象

var c ={};
c.prop=true;
var showProp=function(obj){
obj.prop=false
}
showProp(c); //c.prop = false

有些人覺得是上面例子是按引用傳參
其實上面還是按值傳參,showProp(c)把c傳進函數(shù)里時,c其實相當于一個引用, 函數(shù)里對obj.prop=false,相當于對引用的對象 改成{prop:false}

再看下面一例子

var c ={};
c.prop=true;
var showProp=function(obj){
  obj = new Object();
  obj.prop=false
  return obj;
}
showProp(c);
alert(c.prop); //true

這里明明把傳入obj修改了,如果按照函數(shù)按引用傳參,函數(shù)里面的修改肯定會反映到外部

希望本文所述對大家的javascript程序設計有所幫助。

相關文章

最新評論

光山县| 岗巴县| 莆田市| 集贤县| 日喀则市| 桃江县| 长治市| 伊川县| 克拉玛依市| 军事| 浠水县| 喀喇| 通化县| 福鼎市| 封丘县| 南川市| 小金县| 城口县| 磐石市| 探索| 鸡泽县| 库伦旗| 长海县| 朝阳县| 辽中县| 石林| 吉木萨尔县| 旺苍县| 南乐县| 建平县| 景东| 安庆市| 四川省| 清丰县| 江源县| 左云县| 星座| 饶平县| 齐河县| 青冈县| 澎湖县|