函数的属性length、prototype和方法call()、apply()

length指的是该函数所期望传递进来的参数个数。

function fun0(){}             //0

function fun1(num1){}         //1

function fun2(num1,num2){}    //2

//prototype

function MyObject(name, size)  {

this.name = name;

this.size = size;

}

var obj = new MyObject();

MyObject.prototype.color = "red";

alert(obj.color);  //red

MyObject.prototype.color = "green";

alert(obj.color);  //green

可以说,prototype实际上是“引用”,而非“赋值”。也就是给一个类添加一个属性或者方法,是给它添加了个引用,而非赋值一份给它。

call和apply是可以通过函数名称来调用函数

对于apply而言:

有两个参数,第一个是调用的上下文,第二个是参数数组,可以直接把arguments传递进去

对于call而言:

第一个参数是上下文对象,后面的参数是函数参数

function sum(num1,num2){return num1+num2;}

function callSum1(num1,num2){

//使用sum这个函数来完成一次调用,调用的参数就是callSum1这个函数的参数

` return sum.apply(this,arguments);

//相当于:return sum.apply(this,[num1,num2]);

}

alert(callSum1(1,2)); //3

function callSum2(num1,num2){

//call是通过参数列表来完成传递

return sum.call(this,num1,num2);

}

alert(callSum2(1,2));              //3

函数的属性length、prototype和方法call()、apply()

时间: 2024-10-26 14:24:48

函数的属性length、prototype和方法call()、apply()的相关文章

函数深入理解---函数的属性length和方法call 和apply

函数同样有两个非常好用的属性:length 和prototype function fn1(){ } function fn2(num1,num2){ } function fn3(num1){ } //函数的length就表示该函数所期望的参数值 alert(fn1.length) // 0 alert(fn2.length) // 2 alert(fn3.length) // 1 call 和apply方法查可以通过函数名称来调用函数 对于apply而言 有两个参数,第一个是调用的上下文,第

JavaScript函数内部属性和函数方法

函数是对象,有自己的属性和方法 .首先通过console下输出的函数属性方法来直观的看一下: 函数内部属性只要包括两个特殊的对象:arguments和this. 函数属性包括:length和prototype 函数方法(非继承)包括:apply()和call() 继承而来的函数方法:bind().toString().toLocaleString().valueOf() 其他的目前不熟,后面再补充 1. 函数内部属性 在函数内部,有两个特殊的对象,arguments和this. argument

实现Date函数属性中的format方法

js中没有Date.format方法的,所以在date属性中加format方法 //js格式化属性 Date.prototype.format = function (format) { var o = { "M+": this.getMonth() + 1, //month "d+": this.getDate(), //day "h+": this.getHours(), //hour "m+": this.getMinu

JS学习之函数内部属性和方法

知识点:arguments和this对象.caller属性.apply()和call()方法     arguments对象:函数内部对象,传入函数中所有参数的集合,类数组对象 属性:callee 指针,指向拥有这个arguments对象的函数  作用:解耦 例子:迭代 function factorial(num) { if(num<=1){ return 1; }else{ return ( num*arguments.callee(num-1)); } } console.log(fact

length()方法,length属性和size()的方法的区别

length()方法,length属性和size()的方法的区别: length()方法是针对字符串来说的,要求一个字符串的长度就要用到它的length()方法: length属性是针对Java中的数组来说的,要求数组的长度可以用其length属性: java中的size()方法是针对泛型集合说的,如果想看这个泛型有多少个元素,就调用此方法来查看! 这个例子来演示这两个方法和一个属性的用法: public static void main(String[] args) { String []li

javascript中Math函数的属性与方法

math函数的属性 Math.PI:返回圆周率. math函数的方法 绝对值: Math.abs(); 对数进行上舍入: Math.ceil(); 对数进行下舍入: Math.floor(); Math.pow(x, y); x的y次幂,y可以是分数 求最大最小值:Math.max();和Math.min(); max和min方法中可以有多个值. 随机数: Math.random(); 随生成一个0到1之间的随机数,包含0,不包含1 // 打印20到60之间的随机数 var random = p

JS函数的属性

1.arguments.callee //经典的阶乘(递归)函数 function factorial(num) { if (num <= 1) { return 1; } else { return num * factorial(num - 1); } } //消除函数名的耦合现象 function factorial(num) { if (num <= 1) { return 1; } else { return num * arguments.callee(num - 1);//函数内

函数常见的写法及调用方法整理

我们平时在阅读别人的代码的时候,总能看到别人在写函数的时候,有各种不同的写法及调用方法,今天就总结下我所遇到过的函数常见的写法及调用方法. 一.函数声明 // 函数的写法 function sum(a, b) { return a + b; } // 调用 sum(1,2); // 3  二.函数表达式 // 函数的写法 var sum = function (a, b) { return a + b; } // 调用 sum(2, 3); // 5 三.将方法作为一个对象 // 作为对象方法,

Javascript的私有变量和方法、共有变量和方法以及特权方法、构造器、静态共有属性和静态共有方法

一.私有变量:定义在函数内部的属性和方法称之为该函数的私有属性和方法        共有变量:在函数内部通过this创建的对象和方法称之为该函数的共有属性和方法 特权方法:通过this创建的既可以访问该函数的共有属性和方法,也可以访问该函数的私有属性和方法称之为特权方法 构造器:对象在创建的时候调用特权方法来初始化实例的属性,这个方法也称为构造器 /** * 类的内部私有属性.私有方法.特权方法.共有属性和共有方法以及构造器 * @param id * @param bookname * @pa