https://www.jb51.net/article/127527.htm
1.函数声明
function run(){<br /> alert("函数声明") //这里是你函数的内容<br /> }<br /> //调用<br /> run()
2.函数表达式
var run = function(){<br /> alert("这是一种声明函数的写法,左边是一个变量,右边是一个函数的表达式,意思就是把一个匿名函数的表达式赋值给了一个变量run,只是声明了一个变量指向了一个函数对象")//这里是你函数的内容<br /> }<br /> run()<br />**也可以:**<br />var run = function fu(a, b){<br />console.log(a + b);<br />}<br />run(); //**注意此方法定义的函数,后面不能用fu() 调用,只能用run();**
3.方法调用式
作为对象方法,函数写法,这里创建了两个函数外面用{}包裹起来<br /> var Text = {<br /> run1 : function(){<br /> alert("run1:这个必须放在一个对象内部,放在外边会出错")//这里是函数内容<br /> },<br /> run2 : function(){<br /> alert("run2:这个必须放在一个对象内部,放在外边会出错")//这里是函数内容<br /> }<br /> }<br /> Text.run1()//调用第一个函数<br /> Text.run2()//调用第二个函数
4.构造器调用式
方法一<br /> var add = function() { //函数表达式定义函数<br /> this.name = "汇智网";<br /> this.sum = function (a, b){<br /> return a + b;<br /> }
}<br /> // 构造器调用模式<br /> var obj = new add(); //obj是一个对象(将函数转化为对象)<br /> console.log(obj);<br /> alert(obj.sum(1,2)); //=>3<br /> //
方法二<br /> var funName = function(){};<br /> funName.prototype.way = function(){<br /> alert('这是在funName函数上的原始对象上加了一个way方法,构造函数中用到');<br /> }<br /> 调用<br /> var funname = new funName();// 创建对象<br /> funname.way();//调用对象属性
prototype<br /> function employee(name,job,born)<br /> {<br /> this.name=name;<br /> this.job=job;<br /> this.born=born;<br /> //return {name,job,born}<br /> }<br /> //console.log(employee(1,2,3));<br /> var bill= new employee("Bill Gates","Engineer",1985);<br /> //employee("Bill Gates","Engineer",1985);<br /> //console.log(bill);
employee.prototype.salary=null;<br /> bill.salary=20000;<br /> <br /> //console.log(employee.job);<br /> document.write(bill.salary);
5.自执行函数
方法1:最前最后加括号 <br /> (<br /> function(){alert(1);}()<br /> ); <br /> /*好处是,能提醒阅读代码的人,这段代码是一个整体。 <br /> 例如,在有语法高亮匹配功能的编辑器里,光标在第一个左括号后时,最后一个右括号也会高亮,看代码的人一眼就可以看到这个整体。 */
//方法2:function外面加括号 <br /> (function(){alert(1);})(); <br /> //这种做法比方法1少了一个代码整体性的好处。
//方法3:function前面加运算符,常见的是!与void 。<br /> !function(){alert(1);}(); <br /> void function(){alert(2);}();
6.apply/call调用模式
//(1).apply调用<br /> var add = function (a, b) {<br /> return a + b;<br /> }<br /> console.log(add.apply(null,[1,2])); //=>3
(2).call调用<br /> var add = function (a, b) {<br /> return a + b;<br /> }<br /> console.log(add.call(null,1,2)); //=>3