Javascript中定义函数的方式有多种,函数直接量就是其中一种。
如var fun = function(){},这里function如果不赋值给fun那么它就是一个匿名函数。好,看看匿名函数的如何被调用。
方式1,调用函数,得到返回值。强制运算符使函数调用执行(function(x,y){ alert(x+y); return x+y; }(3,4)); 方式2,调用函数,得到返回值。
强制函数直接量执行再返回一个引用,引用再去调用执行(function(x,y){ alert(x+y); return x+y;} )(3,4); 这种方式也是很多库爱用的调用方式,如jQuery,Mootools。 方式3,使用voidvoid function(x) { x = x-1; alert(x);}(9);。
/*第一种方法,使用function语句,格式如下*/function fn(){ alert("这是使用function语句进行函数定义"); }fn();/*第二种方法,使用Function()构造函数克隆函数*/var F = new Function("a","b","alert(a+b)"); F(a,b);其实相当于如下代码:function F(a,b){ alert(a+b); }/*第三种方法,使用函数直接量*/var zhenn = function(){ alert("zhenn"); } zhenn();。
JS函数的定义方式比较灵活,它不同于其他的语言,每个函数都是作为一个对象被维护和运行的。
先看几种常用的定义方式:
function func1([参数]){
/*函数体*/
}
var func2=function([参数]){
/*函数体*/
};
var func3=function func4([参数]){
/*函数体*/
};
var func5=new Function();
上述第一种方式是最常用的方式,不用多说。
第二种是将一匿名函数赋给一个变量,调用方法:func2([函数]);
第三种是将func4赋给变量func3,调用方法:func3([函数]);或func4([函数]);
第四种是声明func5为一个对象。
再看看它们的区别:
function func(){
//函数体
}
//等价于
var func=function(){
//函数体
}
但同样是定义函数,在用法上有一定的区别。
<script>
//这样是正确的
func(1);
function func(a)
{
alert(a);
}
</script>
<script>
//这样是错误的,会提示func未定义,主要是在调用func之前没有定义
func(1);
var func = function(a)
{
alert(a);
}
//这样是正确的,在调用func之前有定义
var func = function(a)
{
alert(a);
}
func(1);
</script>
用同样的方法可以去理解第三种定义方式。
第四种定义方式也是需要声明对象后才可以引用。
定义函数的种方法1.
最基本的作为一个本本分分的函数声明使用。
复制代码代码如下:function func(){}或var func=function(){};2.
作为一个类构造器使用:复制代码代码如下:function class(){}
class.prototype={};
var item=new class();3.
作为闭包使用:复制代码代码如下:(function(){
//独立作用域})();4.
可以作为选择器使用:复制代码代码如下:var addEvent=new function(){
if(!-[1,]) return function(elem,type,func){attachEvent(elem,'on'+type,func);};
else return function(elem,type,func){addEventListener(elem,type,func,false);}
};//避免了重复判断5.
第一种
function abc(){
// code to process
}
第二种
function abc(def){
// code to process
}
第三种
function (){
// code to process
}
第四种
function (abc){
// code to process
}
在JavaScript中定义对象可以采用以下几种方式: 1.基于已有对象扩充其属性和方法 2.工厂方式 3.构造函数方式 4.原型(“prototype”)方式 5.动态原型方式-- 1.基于已有对象扩充其属性和方法object.name = "zhangsan";object.sayName = function(name){ this.name = name; alert(this.name);}object.sayName("lisi");-- 2.工厂方式 function createObject() { var object = new Object(); object.username = "zhangsan"; object.password = "123"; object.get = function() { alert(this.username + ", " + this.password); } return object;}var object1 = createObject();var object2 = createObject();object1.get(); -- 采用带参数的构造方法:function createObject(username, password){ var object = new Object(); object.username = username; object.password = password; object.get = function() { alert(this.username + ", " + this.password); } return object;}var object1 = createObject("zhangsan", "123");object1.get();。
1. 函数调用
function test(){
alert(1);
}
2. 直接调用
test();
3. 指定内部this指针调用
(1)test.call(window);//执行test函数,将方法内部this指向window
(2)test.apply(window);///执行test函数,将方法内部this指向window
4. 通过事件调用
window.onload = test;//当页面载入时调用
window.onerror = test;当页面发生错误时调用
声明:本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
蜀ICP备2020033479号-4 Copyright © 2016 学习鸟. 页面生成时间:2.894秒