簡單搜索了下,遇到點問題
1,經常在JS中看到如var foo = function(){}的形式
foo是方法名還是對象名,如果想調用此方法,是用foo(),foo.function(),還是該如何正確調用。除此之外,希望高手幫忙總結下,JS自定義方法和調用的一個大全,這個可以沒有,先謝了
方法(method)是通過對象調用的javascript函數。也就是說,方法也是函數,只是比較特殊的函數。
函數(function)是一段代碼,需要通過名字來進行調用。它能將一些數據(函數的參數)傳遞進去進行處理,然后返回一些數據(函數的返回值),也可以不返回數據。
當將函數和對象和寫在一起時,函數(function)就變成了方法(method)。
為了便於理解方法、函數、對象,我們通過示例來了解一下:
1、JS中定義函數的格式為:
var funname =function(參數a,參數b...){具體方法動作};
或者 function funname(var1,var2){要執行的具體代碼}。
舉例,var foo=function(a,b){ return a+b; }
在上面函數中,foo就是函數名,而不是對象名。
2、想要調用上式中的函數的話可以直接調用函數名稱。
如:sumA=foo(5,6);
也就是sumA直接調用了foo()函數,並且為函數傳值(5,6),最終結果sumA=11。
3、你提問中說方法和對象分不清,那我們再來看下如何定義對象,如:
var foo={
fooid:10;
fooname:"對象",
fooFunc:function(){alert(this.fooname);}
}
在上面程序代碼中,foo就成了對象名,fooid、fooname都是對象的屬性,而fooFunc函數就成了該對象的一個方法。
如果想要調用該對象下的fooFunc方法的話,可以使用對象名.方法名,即:foo.funFunc();
對於函數,JS中調用方式有很多,下面就總結介紹一下JS函數調用的四種方法:
1、通過對象調用方法:
先定義一個對象,然后在對象的屬性中定義方法,通過myobject.property來執行方法,this即指當前的myobject 對象。
代碼示例:
var blogInfo={blogId:123,blogName:"werwr",showBlog:function(){alert(this.blogId);}};
blogInfo.showBlog();
2、方法(函數)的直接調用模式:
定義一個函數,設置一個變量名保存函數,這時this指向到window對象。
代碼示例:
var myfunc = function(a,b){return a+b;}
alert(myfunc(3,4));
3、構造器調用模式
定義一個函數對象,在對象中定義屬性,在其原型對象中定義方法。在使用prototype的方法時,必須實例化該對象才能調用其方法。
代碼示例:
var myfunc = function(a){this.a = a;};
myfunc.prototype = {show:function(){alert(this.a);}}
var newfunc = new myfunc("123123123");newfunc.show();
4、apply,call調用方法:
代碼示例:
var myobject={};
var sum = function(a,b){return a+b;};
var sum2 = sum.call(myobject,10,30); //var sum2 = sum.apply(myobject,[10,30]); alert(sum2);
擴展資料:
在項目開發過程中,也許你會遇這樣的情況:
在某一Js文件中需要完成某一功能,但這一功能的大部分代碼在另外一個Js文件中已經完成了,自己只需要調用這個方法再加上幾句代碼就可以實現所需的功能。
例如有這樣一個html,里面有一個按鈕,當按下時調用b.js文件中的方法b()。而b()中又要調用a.js文件中的方法a()。若要實現這個功能,必須注意,將要引入的Js文件代碼放在</body>下面。
首先,我們在html中引入b.js,並在</body>之后加入引用語句。如下:
b.js文件如下:
在b.js文件中前4行代碼中我們引入了a.js文件,並在第7行代碼中調用了a.js代碼中的a()方法。
讓我們來分析一下關鍵的幾句代碼:首先,我們利用document.createElement("script")生成了一個script的標簽,設置其type屬性為text/javascript,src為a.js(這里的a.js同b.js放在同一個目錄,也可放在不同的目錄)。
最后將這個標簽動態地加入body中。如此一來,我們就可以調用到不同js文件中的方法了。