通过arguments属性,函数可以处理可变数量的参数。arguments对象的length属性包含了传递给函数的参数的数目。
解决方案 »
- 何让二级菜单点击下一个关闭上一个,并且让三级菜单点击保持状态,点击比闭合?js内容 请帮帮忙 谢谢大家
- JS转换成JQ
- 求控制DIV的宽高向左下角收缩代码。
- 关于使用js编写的代码,为什么我的在非ie浏览器中不能正常显示,请大家帮帮忙……
- js向cgi传递变量
- function(){}()+javascript函数结尾加()
- 急急!求助!!
- 求两个下拉框 二级 联动 的代码 !!!!???????
- 一个简单人的问题
- 关于页面A用window.showModalDialog脚本打开B页面,在页面A又用脚本关闭B页面的问题。
- 一种奇怪的C#写法
- 为什么不能修改img的onclick属性?在线等待!
sendMessage参数中包含{},就是一个数组如果把代码改为:
<script language="javascript">
function sendMessage(msg, obj) {
if ( arguments.length ==2)
alert(obj.aaa);
else
alert ( msg );
}sendMessage ( "How are you?", {
aaa:"dd"
});
</script>
结果是会输出 dd
if ( arguments.length ==2)//如果传递的参数个数等于2
obj.handleMsg (msg);
else
alert ( msg );
}
sendMessage( "How are you?",
//How are you?既是msg值,因为传递了两个参数,所以执行obj.handleMsg (msg);也就是下面的函数:
{
handleMsg: function (msg)
{
alert ( "This is a custom message: " + msg );
}
}
);
handleMsg: function (msg) {
alert ( "This is a custom message: " + msg );
}
});
其中
{
handleMsg: function (msg) {
alert ( "This is a custom message: " + msg );
}
}
定义了一个对象,对象里面有一个属性,handleMsg,这个属性是个函数,
可以用 obj. handleMsg() 调用此方法
function sendMessage(msg, obj) {
if ( arguments.length ==2)
obj.handleMsg (msg);
else
alert ( msg );
}sendMessage ( "How are you?", {
handleMsg: function (msg) {
alert ( "This is a custom message: " + msg );
}
});
</script>
function sendMessage(msg, obj) {
if ( arguments.length ==2){//如果参数的长度为2
obj.handleMsg (msg);//调用obj参数里的handleMsg方法, 此方法的参数是msg
}else { //如果参数的长度不为2
alert ( msg );//alert(msg参数) 如msg是"How are you?"
}
}sendMessage ( "How are you?",
{handleMsg: function (msg) {alert ( "This is a custom message: " + msg );}//在这里obj实际上是个长度为1的json对象
//它里面包含一个key值, 记handleMsg, 这个key值想对应的value是一个函数function(msg){alert(...)}
//这个function需要传如一个参数, 而这个参数根据sendMessage的定义, 是sendMessage的第一个参数,记"How are you?"字符串
});
</script>希望清楚一点了..
if(!obj.name)
{
obj.name="default";
}
if(! obj.message)
{
obj.message="default message";
}
if(! obj.handleMsg)
{
alert("this is a message to "+ obj.name );
}
else
{
obj.handleMsg();
}
}sendMessage ({
message: "how are you",
name: "hzrui",
handleMsg: function (msg) {
alert (this.message + this.name );
}
});你可以从上面的例子看出用对象作为参数的好处
//javascript中也有对象的概念,并且对象可以有属性,和函数;
//它们都通过一个引用来供外界调用,这里obj是一个对象,obj.handleMSg代表引用对象中的handleMsg函数。
//arguments是一个javascript函数自带的参数,用来记录传给当前函数的参数数量,sendMessage函数可以接收
//两个参数,这里首先判断是否传递了两个参数,如果两个参数就调用参数obj的handleMsg函数.
function sendMessage(msg, obj) {
if ( arguments.length ==2){//如果参数的长度为2
obj.handleMsg (msg);//调用obj参数里的handleMsg方法, 此方法的参数是msg
}else { //如果参数的长度不为2
alert ( msg );//alert(msg参数) 如msg是"How are you?"
}
}
//{}在javascript中就好像java的new来构造一个对象,在sendMessage调用中通过构造一个新对象{name:value}
//name就是函数的引用,这里为handleMsg;value可以是一个数值货对象,function(msg)被指定为新对象的
//一个成员函数,其实现为弹出加工后的msg消息.这里会显示This is a custom message How are you?
sendMessage ( "How are you?",
{handleMsg: function (msg) {alert ( "This is a custom message: " + msg );}
});
//而且javascript函数是弱类型的,可以接收少于声明的参数个数,如果这样调用,则直接弹出"How are you?"
sendMessage("How ar you?");
</script> 希望清楚一点了..