前言:
如今同学们对“js是否空对象”大概比较珍视,兄弟们都需要了解一些“js是否空对象”的相关内容。那么小编在网摘上汇集了一些对于“js是否空对象””的相关知识,希望看官们能喜欢,姐妹们一起来学习一下吧!javascript函数不同于其他的语言,每个函数都是作为一个对象被维护和运行的。通过函数对象的性质,可以很方便的将一个函数赋值给一个变量或者将函数作为参数传递。:
一 js中function()
1、用function关键字定义一个函数,并为每个函数指定一个函数名,通过函数名来进行调用。在JavaScript解释执行时,函数都是被维护为一个对象,即函数对象(Function Object)。
2、函数对象与其他用户所定义的对象有着本质的区别,这一类对象被称之为内部对象,如日期对象(Date)、数组对象(Array)、字符串对象(String)等都属于内部对象。这些内置对象的构造器是由JavaScript本身所定义的,通过执行new Array()语句返回一个对象,JavaScript内部有一套机制来初始化返回的对象,而不是由用户来指定对象的构造方式。
3、在JavaScript中,函数对象对应的类型是Function,正如数组对象对应的类型是Array,日期对象对应的类型是Date。即可以通过new Function()来创建一个函数对象,也可以通过function关键字来创建一个对象
4、声明函数的语法
function func(…){…}
var func=function(…){…};
var func=function func1(…){…};
var func=new Function();
二、function()函数对象的创建
1、用new Function()的形式来创建一个函数
var func=new Function(p1,p2,...,pn,body);
参数的类型都是字符串,p1到pn表示所创建函数的参数名称列表,body表示所创建函数的函数体语句,funcName就是所创建函数的名称。还可以不指定任何参数创建一个空函数,不指定func创建一个匿名函数(函数没有任何意义)。
示例
new Function("a","b","c","return a+b+c");
new Function("a,b,c", "return a+b+c");
new Function("a,b","c", "return a+b+c");
2、创建完成后立即调用函数
示例
var val=function(a,b){
return a+b;
}(1,2);
alert(val); val是表示返回的值,并非创建的函数,因为括号“()”的优先级高于等号“=”等号。可以用于在很长的代码段中进行模块化设计或者想避免命名冲突。
3、有名函数与匿名函数
function funcName(){函数体}。
var funcName=function(){函数体}。
前面一种方式创建的是有名函数,而后面一种方式是创建一个匿名函数,匿名函数只是让一个变量指向了这个匿名函数本身。在使用上仅有一点区别,即对于有名函数,它可以先调用再定义。而对于匿名函数,它必须在调用之前定义。
示例
由上述示例可知,尽管JavaScript是一门解释型的语言,但在函数调用时,会检查整个代码中是否存在相应的调用函数是否定义,函数是通过function funcName()形式定义的才会有效,而不能是匿名函数。
三、函数对象与内部对象的关系
除了函数对象,还有很多内部对象,比如:Object、Array、Date、RegExp、Math、Error。这些名称实际上表示一个类型,可以通过new操作符返回一个对象。然而函数对象和其他对象不同,当用typeof返回一个函数对象的类型时,它仍然会返回字符串“function”,而typeof返回数组对象或其它对象时,则会返回字符串“object”。
示例
使用typeof返回不同对象类型
alert(typeof(Function()));
alert(typeof(new Function()));
alert(typeof(Array));
alert(typeof(Object));
alert(typeof(new Array()));
alert(typeof(new Date()));
alert(typeof(new Object()));
上实例输出结果:前面4条语句都会显示“function”,而后面3条语句则显示“object”,可见new一个function实际上是返回 一个函数。这与其他的对象有很大的不同。其他的类型Array、Object等都会通过new操作符返回一个普通对象。尽管函数本身也是一个对象,但它与普通的对象还是有区别的,因为它同时也是对象构造器,也就是说,可以new一个函数来返回一个对象,这在前面已经介绍。所有typeof返回“function”的对象都是函数对象。也称这样的对象为构造器(constructor),因而,所有的构造器都是对象,但不是所有的对象都是构造 器。
四、函数作为参数
在前面说到每个函数都被表示为一个特殊的对象,即将其赋值给一个变量,再通过变量名进行函数调用。作为一个变量,则可以将其用作参数的形式传递给另一个函数。
示例
将func2作为参数传递给func1
function func1(newFunc){
newFunc();
}
function func2(){
alert("ok");
}
func1(func2);
注:如果需要在页面载入时进行一些初始化工作,可以先定义一个init的初始化函数,再通过window.onload=init;语句将其绑定到页面载入完成的事件。这里的init就是一个函数对象,它可以加入window的onload事件列表。
感谢您阅读了这篇文章,希望会对您有所帮助。喜欢文章就关注我吧,后面的文章内容会越来越精彩喔!
标签: #js是否空对象