javascript——函数属性和方法

 1 <script type="text/javascript">
 2         //每个函数都包含两个属性:length 和 prototype
 3         //length:当前函数希望接受的命名参数的个数
 4         //prototype:是保存他们所有实力方法的真正所在
 5
 6
 7         function sayName(name) {
 8             alert(name);
 9         }
10
11
12         function sum(num1, num2) {
13             return num1 + num2;
14         }
15
16         function sayHi() {
17             alert("hi");
18         }
19
20         alert(sayName.length);//1 参数个数一个
21         alert(sum.length);//2 参数个数2个
22         alert(sayHi.length);//0 没有参数
23
24
25         //每个函数都包含两个非继承而来的方法:apply() 和 call()
26         //这两个方法都是在特定的作用域中调用函数,实际上等于设置函数体内this对象的值
27         //首先apply()接受两个参数:一个是函数运行的作用域,另一个参数数组(可以是数组实例也可以是arguments对象)
28         function sum(num1, num2) {
29             return num1 + num2;
30         }
31
32         function callSum1(num1, num2) {
33             return sum.apply(this, arguments);//传入arguments对象
34         }
35
36         function callSum2(num1, num2) {
37             return sum.apply(this, [num1, num2]);
38         }
39
40         alert(callSum1(10, 10));//20
41         alert(callSum2(10, 20));//30
42
43
44         //其次,call方法第一个参数没有变化,变化的是其余的参数都是传递参数,传递给函数的参数需要逐个列举出来
45         function sum(num1, num2) {
46             return num1 + num2;
47         }
48
49         function callSum(num1, num2) {
50             return sum.call(this, num1, num2);
51         }
52
53         alert(callSum(10, 200));
54         //至于使用哪个方法更方便,完全取决于你的意愿。如果没有参数,用哪个都一样。
55         //但是,apply和call方法的出现绝对不是只是为了怎样去船体参数。
56         //它们真正的用武之地在于扩充函数赖以运行的作用域。
57
58         window.color = "red";
59         var o = {color: "blue"};
60         function sayColor() {
61             alert(this.color);
62         }
63         sayColor();//red
64
65
66         sayColor.call(this);//red
67         sayColor.call(window);//red
68         sayColor.call(o);//blue
69         //使用apply和call来扩充作用域的最大的好处就是不需要与方法有任何的耦合关系。
70
71
72         //ECMAScript5 还定义了一个方法:bind()。这个方法会创建一个函数的实例,其this值会被绑定到传给bind函数的值
73         window.color = "red";
74         var o = {color: "blue"};
75         function sayColor() {
76             alert(this.color);
77         }
78         var bindFun = sayColor.bind(o);
79         bindFun();//blue
80
81     </script>
时间: 2024-12-12 18:35:08

javascript——函数属性和方法的相关文章

Javascript对象属性与方法汇总

1 Javascript对象属性与方法汇总 2 发布时间:2015-03-06 编辑:www.jquerycn.cn 3 详细介绍下,javascript对象属性与对象方法的相关知识,包括javascript字符串.数组.日期等对象的属性与常用方法,有需要的朋友参考下. 4 本节主要内容: 5 Javascript对象属性与方法 6 7 对Javascript对象属性方法做一个详细的汇总介绍,供jquery中文网的朋友参考. 8 9 数组(Array):系列元素的有序集合 10 属性: 11 l

JavaScript document属性和方法

JavaScript document属性和方法 --------------------------------------------属性: 1. Attributes     存储节点的属性列表(只读) 2. childNodes     存储节点的子节点列表(只读) 3 .dataType     返回此节点的数据类型 4. Definition     以DTD或XML模式给出的节点的定义(只读) 5. Doctype     指定文档类型节点(只读) 6 .documentEleme

JavaScript函数的apply方法与call方法

首先,function是一个指向Function对象,函数名是一个指向函数的指针.那么在函数体内,就会有一个作用域,即this关键字. this关键字指的是函数运行的作用域,举个例子来说: <script type="text/javascript">         function funcA() {             alert(this);             alert("Function A");         } </sc

《JS权威指南学习总结--8.7 函数属性、方法和构造函数》

内容要点:   在JS程序中,函数是值.对函数执行typeof运算会返回字符串 "function",但是函数是JS中特殊的对象.因为函数也是对象,它们也可以拥有属性和方法,就像普通的对象可以拥有属性和方法一样.甚至可以用Function()构造函数来创建新的函数对象. 一.length属性     在函数体内,arguments.length表示传入函数的实参的个数.    而函数本身的length属性则有着不同含义.函数length属性是只读属性,它代表函数实参的数量,这里的参数指

函数属性和方法:length和prototype

ECMAScript中的函数是对象,因此函数也有属性和方法.每个函数都包含两个属性:ength和prototype. 其中, length属性表示函数希望接收的命名参数的个数 . function box1(name,sex){ return name+sex; } alert(box1.length); PS: 对于prototype属性, 它是保存所有实例方法的真正所在, 也就是原型. 这个属性,我们将在面向对象一章详细介绍. 而prototype下有两个方法: apply()和call()

JavaScript 字符串属性和方法

字符串属性: constructor : 返回创建字符串属性的函数; length : 返回字符串的长度; prototype : 允许您向对象添加属性和方法; 字符串属性: charAt() : 返回指定索引位置的字符; charCodeAt() : 返回指定索引位置字符的 Unicode 值; concat() : 连接两个或多个字符串,返回连接后的字符串; fromCharCode() : 将字符转换为 Unicode 值; indexOf() : 返回字符串中检索指定字符第一次出现的位置

javascript数组属性及方法

数组元素的添加 1. arrayt.splice(index,howmany,item1,.....,itemX) 向/从数组中添加/删除项目,然后返回被删除的项目 2. array.unshift() 将一个或多个新元素添加到数组开始,数组中的元素自动后移,返回数组新长度 3. array.push(newelement1,newelement2,....,newelementX) 将一个或多个新元素添加到数组结尾,并返回数组新长度 数组元素删除 1. array.pop() 删除并返回数组的

JavaScript基础学习之-JavaScript权威指南--8.7函数属性方法构造函数

函数属性.方法和构造函数 一.函数属性 函数是js中特殊的对象,可以拥有属性. funcation.length属性:代表形参的长度,只读属性,不允许更改 arguments.length代表的是实参长度 prototype属性:每个函数都有一个prototype属性,当把函数当做构造函数时,新创建的对象会从原型对象上继承属性. 二.函数方法 与其他语言不同,ECMAScript函数不介意传递进来多少个参数,也不在乎是什么类型.因为实参在内部是用一个类数组来表示的,函数接收到的始终是个类数组.

JavaScript全局属性/函数

JavaScript 全局属性和方法可用于创建Javascript对象. JavaScript 全局属性 属性 描述 Infinity 代表正的无穷大的数值. NaN 指示某个值是不是数字值. undefined 指示未定义的值. JavaScript 全局函数 函数 描述 decodeURI() 解码某个编码的 URI. decodeURIComponent() 解码一个编码的 URI 组件. encodeURI() 把字符串编码为 URI. encodeURIComponent() 把字符串