<script type="text/javascript">
//每个函数都包含两个属性:length 和 prototype
//length:当前函数希望接受的命名参数的个数
//prototype:是保存他们所有实力方法的真正所在 function sayName(name) {
alert(name);
} function sum(num1, num2) {
return num1 + num2;
} function sayHi() {
alert("hi");
} alert(sayName.length);//1 参数个数一个
alert(sum.length);//2 参数个数2个
alert(sayHi.length);//0 没有参数 //每个函数都包含两个非继承而来的方法:apply() 和 call()
//这两个方法都是在特定的作用域中调用函数,实际上等于设置函数体内this对象的值
//首先apply()接受两个参数:一个是函数运行的作用域,另一个参数数组(可以是数组实例也可以是arguments对象)
function sum(num1, num2) {
return num1 + num2;
} function callSum1(num1, num2) {
return sum.apply(this, arguments);//传入arguments对象
} function callSum2(num1, num2) {
return sum.apply(this, [num1, num2]);
} alert(callSum1(, ));//
alert(callSum2(, ));//30 //其次,call方法第一个参数没有变化,变化的是其余的参数都是传递参数,传递给函数的参数需要逐个列举出来
function sum(num1, num2) {
return num1 + num2;
} function callSum(num1, num2) {
return sum.call(this, num1, num2);
} alert(callSum(, ));
//至于使用哪个方法更方便,完全取决于你的意愿。如果没有参数,用哪个都一样。
//但是,apply和call方法的出现绝对不是只是为了怎样去船体参数。
//它们真正的用武之地在于扩充函数赖以运行的作用域。 window.color = "red";
var o = {color: "blue"};
function sayColor() {
alert(this.color);
}
sayColor();//red sayColor.call(this);//red
sayColor.call(window);//red
sayColor.call(o);//blue
//使用apply和call来扩充作用域的最大的好处就是不需要与方法有任何的耦合关系。 //ECMAScript5 还定义了一个方法:bind()。这个方法会创建一个函数的实例,其this值会被绑定到传给bind函数的值
window.color = "red";
var o = {color: "blue"};
function sayColor() {
alert(this.color);
}
var bindFun = sayColor.bind(o);
bindFun();//blue </script>

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

  1. Javascript对象属性与方法汇总

    Javascript对象属性与方法汇总 发布时间:2015-03-06 编辑:www.jquerycn.cn 详细介绍下,javascript对象属性与对象方法的相关知识,包括javascript字符 ...

  2. JavaScript document属性和方法

    JavaScript document属性和方法 --------------------------------------------属性: 1. Attributes     存储节点的属性列表 ...

  3. JavaScript数组属性与方法

    Array 对象属性 属性 描述 constructor 返回对创建此对象的数组函数的引用. length 设置或返回数组中元素的数目. prototype 使您有能力向对象添加属性和方法. Arra ...

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

    内容要点:   在JS程序中,函数是值.对函数执行typeof运算会返回字符串 "function",但是函数是JS中特殊的对象.因为函数也是对象,它们也可以拥有属性和方法,就像普 ...

  5. JavaScript 对象属性与方法

    对象的创建: 1 字面量创建 var obj = {a:1,b:2}; 2 构造函数创建 var obj = new Object(); obj.a = 1; obj.b = 2; 3 Object. ...

  6. javascript 函数属性prototype(转)

    在JavaScript中并没有类的概念,但javascript中的确可以实现重载,多态,继承.这些实现其实方法都可以用JavaScript中的引用和变量作用域结合prototype来解释. 1.pro ...

  7. call,apply,bind——js权威指南函数属性和方法章节读书笔记

    每个函数(即这两个方法是函数的方法)都包含两个非继承而来的方法: apply()和 call().参数明确,使用call.参数不明确,使用apply,可以遍历数组参数 1,call里面的参数是散开的, ...

  8. apply方法和call方法。函数属性与方法。

    每个函数都有length属性哥prototype属性. length属性表示的是函数接入参数的个数 在es引用类型语言中,prototype是保存它们所有实例方法的真正所在.换句话来说,类似于toSt ...

  9. javascript数组属性及方法

    数组元素的添加 1. arrayt.splice(index,howmany,item1,.....,itemX) 向/从数组中添加/删除项目,然后返回被删除的项目 2. array.unshift( ...

随机推荐

  1. 【转】linux 中dd命令使用详解

    原文网址:http://xiaozhuang.blog.51cto.com/4396589/850657 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究 ...

  2. C#调用C++动态库(dll)

    在实际软件开发过程中,由于公司使用了多种语言开发,在C#中可能需要实现某个功能,而该功能可能用其他语言已经实现了,那么我们可以调用其他语言写好的模块吗?还有就是,由于C#开发好的项目,我们可以利用re ...

  3. 常用myeclipse的快捷键,对菜鸟超有用的

    1. ctrl + h ,这个键超有用的,可以搜索当前项目的整个文件,并锁定到改文件的 具体位置.如图: 2.ctrl + o,在java文件内,搜索该文件下的所有方法.如图: ctrl + d ,删 ...

  4. rspec学习01

    1.安装rspec 2.基本构造 rspec用关键字describe和it,所以我们可以象正常会话一样去表达一个想法. describe方法创建了一个用例组,在describe所在的代码块里,你可以用 ...

  5. 如何优雅的输出PHP调试信息

    经常因为出现紧急bug而被老板骂的同事,为了更快的修复而直接利用线上的错误环境现场debug,并直接在页面上echo和dump.结果被老板发现了,又是一通臭骂.那么有没有什么办法更优雅的输出PHP调试 ...

  6. Aix项目_shell_rsh_01

    rsh(remote shell) 功能说明:远端登入Shell. 语 法:rsh [-dn][-l <用户名称>][主机名称或IP地址][执行指令] 补充说明:rsh提供用户环境,也就是 ...

  7. 用Objective-C的Category特性添加类的属性

    http://www.cnblogs.com/wupher/archive/2013/01/05/2845338.html Category是Objective-C中常用的语法特性,通过它可以很方便的 ...

  8. Musical Theme - poj 1743(求最大不重叠重复子串)

    题目大意: * 有N(1 <= N <=20000)个音符的序列来表示一首乐曲,每个音符都是1..88范围内的整数,现在要找一个重复的主题. * “主题”是整个音符序列的一个子串,它需要满 ...

  9. hdu4348 - To the moon 可持久化线段树 区间修改 离线处理

    法一:暴力! 让干什么就干什么,那么久需要可持久化线段树了. 但是空间好紧.怎么破? 不down标记好了! 每个点维护sum和add两个信息,sum是这段真实的和,add是这段整体加了多少,如果这段区 ...

  10. UIApplication对象及其代理UIApplicationDelegate[转]

    在开发过程中我们需要一些全局对象来将程序的各个部分连接起来,这些全局对象中最重要的就是UIApplication对象.但在实际编程中我们并不直接和UIApplication对象打交道,而是和其代理打交 ...