js中function()使用方法
以下是引用片段:
function func1(…){…}
var func2=function(…){…};
var func3=function func4(…){…};
var func5=new Function();
<script type="text/javascript">
// 1, 方法調(diào)用模式
// 當(dāng)一個(gè)函數(shù)被保存為對(duì)象的一個(gè)屬性時(shí),我們稱之它為該對(duì)象的一個(gè)方法,那么this被綁定到該對(duì)象上
var myObject={
name : "myObject" ,
value : 0 ,
increment : function(num){
this.value += typeof(num) === 'number' ? num : 0;
return this;
} ,
toString : function(){
return '[Object:' + this.name + ' {value:' + this.value + '}]';
}
}
alert(myObject.increment(10).increment(20).toString()); // [Object:myObject {value:30}]
// 2, 函數(shù)調(diào)用模式
// 當(dāng)一個(gè)函數(shù)并非一個(gè)對(duì)象的函數(shù)時(shí),那么它被當(dāng)作一個(gè)函數(shù)來(lái)調(diào)用,this被綁定到全局對(duì)象上。這是語(yǔ)言設(shè)計(jì)的一個(gè)錯(cuò)誤。倘若語(yǔ)言設(shè)計(jì)正確,當(dāng)內(nèi)部函數(shù)調(diào)用時(shí),this應(yīng)該仍然綁定到外部函數(shù)的this變量上
var myObject={
name : "myObject" ,
value : 0 ,
increment : function(num){
this.value += typeof(num) === 'number' ? num : 0;
return this;
} ,
toString : function(){
return '[Object:' + this.name + ' {value:' + this.value + '}]';
},
getInfo: function(){
var self=this;
return (function(){
//return this.toString(); // 內(nèi)部匿名函數(shù)中this指向了全局對(duì)象window, 輸出 [object Window]
return self.toString(); // 定義一個(gè)變量selft并給它賦值為this,那么內(nèi)部函數(shù)通過(guò)該變量訪問(wèn)到指向該對(duì)象的this
})();
}
}
alert(myObject.increment(10).increment(20).toString()); // [Object:myObject {value:30}]
// 3, 構(gòu)造器調(diào)用模式
// JavaScript是一門基于原型繼承的語(yǔ)言, 這意味著對(duì)象可以直接從其他對(duì)象繼承屬性, 該語(yǔ)言是無(wú)類別的。
// 如果一個(gè)函數(shù)前面帶上new來(lái)調(diào)用,那么將創(chuàng)建一個(gè)隱藏連接到該函數(shù)的prototype成員的新對(duì)象,同時(shí)this將會(huì)被綁定到構(gòu)造函數(shù)的實(shí)例上。
function MyObject(name){
this.name = name || 'MyObject';
this.value=0;
this.increment = function(num){
this.value += typeof(num) === 'number' ? num : 0;
};
this.toString = function(){
return '[Object:' + this.name + ' {value:' + this.value + '}]';
}
this.target = this;
}
MyObject.prototype.getInfo = function(){
return this.toString();
}
// 同時(shí)創(chuàng)建一個(gè)MyObject.prototype對(duì)象,myObject繼承了MyObject.prototype的所有的屬性, this綁定到了MyObject的實(shí)例上
var myObject = new MyObject();
myObject.increment(10);
alert(myObject.value); //10
var otherObject = new MyObject();
otherObject.increment(20);
alert(otherObject.value); //20
alert(myObject.target===myObject); // ture
alert(myObject.target.getInfo()); // [Object:MyObject {value:10}]
// 4, Apply 調(diào)用模式
// JavaScript是一門函數(shù)式的面向?qū)ο缶幊陶Z(yǔ)言,所以函數(shù)可以擁有方法。 函數(shù)的apply方法,如同該對(duì)象擁有此方法,此時(shí)this指向該對(duì)象。
// apply接收兩個(gè)參數(shù),第一個(gè)是要綁定的對(duì)象(this指向的對(duì)象),第二個(gè)是參數(shù)數(shù)組.
function MyObject(name){
this.name = name || 'MyObject';
this.value = 0;
this.increment = function(num){
this.value += typeof(num) === 'number' ? num : 0;
};
this.toString=function(){
return '[Object:'+this.name+' {value:'+this.value+'}]';
}
this.target=this;
}
function getInfo(){
return this.toString();
}
var myObj = new MyObject();
alert(getInfo.apply(myObj)); //[Object:MyObject {value:0}], this指向myObj
alert(getInfo.apply(window)); //[object Window], this指向window
// for and while
function func(a,b){
alert(a); // 1
alert(b); // 2
for(var i=0;i<arguments.length;i++){
alert(arguments[i]); // 1, 2, 1, 2, 3
}
var i=0;
while(i<arguments.length){
alert(arguments[i]); // 1, 2, 1, 2, 3
i=i+1;
}
}
func(1,2,3);
var i=0
for (i=0;i<=10;i++) {
document.write("The number is " + i + "<br/>")
}
</script>
相關(guān)文章
uniapp抖音小程序一鍵獲取用戶手機(jī)號(hào)的示例代碼
文章介紹了如何在uniapp抖音小程序中通過(guò)點(diǎn)擊按鈕一鍵獲取用戶手機(jī)號(hào),encryptedData和iv通過(guò)點(diǎn)擊按鈕回傳,后端部分通過(guò)解密獲取手機(jī)號(hào),感興趣的朋友一起看看吧2024-12-12
移動(dòng)端點(diǎn)擊圖片放大特效PhotoSwipe.js插件實(shí)現(xiàn)
這篇文章主要為大家詳細(xì)介紹了移動(dòng)端點(diǎn)擊圖片放大特效PhotoSwipe.js插件實(shí)現(xiàn)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-08-08
使用javascript實(shí)現(xiàn)頁(yè)面加載loading動(dòng)畫(huà)(附完整源碼)
由于項(xiàng)目中多處要給ajax提交的時(shí)候增加等待動(dòng)畫(huà)效果,所以就寫(xiě)了一個(gè)簡(jiǎn)單的通用js方法,這篇文章主要給大家介紹了關(guān)于如何使用javascript實(shí)現(xiàn)頁(yè)面加載loading動(dòng)畫(huà)的相關(guān)資料,需要的朋友可以參考下2024-06-06
js實(shí)現(xiàn)時(shí)間日期校驗(yàn)
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)時(shí)間日期校驗(yàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-05-05
開(kāi)發(fā)中常用的25個(gè)JavaScript單行代碼(小結(jié))
這篇文章主要介紹了開(kāi)發(fā)中常用的25個(gè)JavaScript單行代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-06-06
細(xì)品javascript 尋址,閉包,對(duì)象模型和相關(guān)問(wèn)題
似乎某些程序員的集合是不相交的,就好像JS程序員和玩編譯原理和CPU指令的匯編程序員就幾乎沒(méi)有交叉。前些日子討論的火熱的“作用域鏈”問(wèn)題,說(shuō)白了就是尋址問(wèn)題,不過(guò),這個(gè)在C中十分簡(jiǎn)單的問(wèn)題卻被JS這個(gè)動(dòng)態(tài)語(yǔ)言弄得很復(fù)雜。2009-04-04
js實(shí)現(xiàn)簡(jiǎn)單的選項(xiàng)卡效果
本文主要介紹了js實(shí)現(xiàn)簡(jiǎn)單的選項(xiàng)卡效果的示例代碼,具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧2017-02-02
JavaScript學(xué)習(xí)點(diǎn)滴 call、apply的區(qū)別
對(duì)于apply和call兩者在作用上是相同的,但兩者在參數(shù)上有區(qū)別的。2010-10-10

