当前位置:编程学习 > JS >>

javascript教程 -常用js函数(1/2)

1. 当实际参数的个数与形式参数的个数不匹配时,不会导致错误。
如果实际参数值过多了,超出的参数值将被忽略;如果实际的参数值过少,缺失的值将被替换为undefined。

2. 在网页特效中一共有四种调用模式: 方法调用模式、函数调用模式、构造器调用模式和apply调用模式。这些模式在如何初始化关键参数this上存在差异。
a.方法调用模式:
当一个函数被保存为对象的一个属性时,我们称它为一个方法。方法调用模式可以使用this去访问对象,所以它能够从对象中取值或修改对象。
b.函数调用模式:
当一个函数并非一个对象的属性时,它被当作一个函数来调用。当函数以此模式调用时,this被绑定到全局变量,这是语言设计上的一个错误。(正确的情况:当内部函数被调用时,this应该仍然被绑定到外部函数的this变量。)解决方法:如果该方法定义一个变量并给他赋值为this,那么内部函数就可以通过那个变量访问到this,按照约定,给那个变量命名为 that:

//给 myobject增加一个double方法

myobject.double = function()
{
 var that = this; //解决方法

 var helper = function()
 {
  that.value = add(that.value, that.value);
 }

 helper(); //以函数的形式调用helper。
}

//以方法的形式调用double
myobject.double();

c.构造器调用模式:
在一个函数前面带上new来调用,那么将创建一个隐藏连接到该函数的prototype成员的新对象,同时this将会被绑定到那个新对象上

//创建一个名为quo的构造函数。它构造一个带有status属性的对象

var quo = function(string)
{
 this.status = string;
}

//给quo的所有实例提供一个名为get_status的公共方法
quo.prototype.get_status = function()
{
 return this.status;
}

//构造一个quo实例
var myquo = new quo("confused"); //构造器模式调用
document.writeln(myquo.get_status());

构造器函数保存在以大写格式命名的变量里。
d.apply调用模式:
apply方法接受两个参数,第一个是将被绑定给this的值,第二个就是参数数组。它让我们构建一个参数数组并用其去调用函数。

//构造一个quo实例
var myquo = new quo("confused"); //构造器模式调用
document.writeln(myquo.get_status());

//构建一个包含两个数字的数组,并将他们相加
add = function(a, b)
{
 return a+b;
}

var anarray = [3, 4];
var sum = add.apply(null, anarray);  //7

//构建一个包含status成员的对象
var statusobject = {
 status: "a-ok"
};

//statusobject并没有继承自quo.prototype,但我们可以再statusobject上调用
//get_status方法,尽管statusobject并没有一个名为get_status的方法。
var status = quo.prototype.get_status.apply(statusobject);

3. 参数:
当一个函数被调用时,会有一个默认的参数,就是 arguments “数组”。


//构造一个将很多值相加的函数

//注意该函数内部定义的变量sum不会与函数外部定义的sum产生冲突。
//该函数只能看到内部的那个变量。

var sum = function()
{
 var i, sum=0;
 for(i = 0; i < arguments.length; i+=1)
 {
  sum += arguments[i];
 }
 return sum;
};

document.writeln(sum(4, 8, 15, 16, 23, 42)); //108

注:arguments并不是一个真正的数组。它知识一个“类似数组”的对象。arguments用友一个length属性,但它缺少所有的数组方法。

4. 返回:
一个函数总是会返回一个值。如果没有置顶返回值,则返回undefined。
如果函数以构造器方式被调用,且返回值不是一个对象,则返回this(该新对象)。

1 2
补充:网页制作,js教程 
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,