浅谈javascript 函数属性和方法


Posted in Javascript onJanuary 21, 2015

        每个函数都包含两个属性: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(10, 10));//20

        alert(callSum2(10, 20));//30

        其次,call方法第一个参数没有变化,变化的是其余的参数都是传递参数,传递给函数的参数需要逐个列举出来

 

 function sum(num1, num2) {

            return num1 + num2;

        }

        function callSum(num1, num2) {

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

        }

        alert(callSum(10, 200));

        至于使用哪个方法更方便,完全取决于你的意愿。如果没有参数,用哪个都一样。
        但是,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

以上就是本文的全部内容,希望小伙伴们能够喜欢。

Javascript 相关文章推荐
js实现在文本框光标处添加字符的方法介绍
Nov 24 Javascript
AngularJs IE Compatibility 兼容老版本IE
Sep 01 Javascript
angular使用post、get向后台传参的问题实例
May 27 Javascript
JavaScript使用atan2来绘制箭头和曲线的实例
Sep 14 Javascript
Angular2实现组件交互的方法分析
Dec 19 Javascript
jQuery封装animate.css的实例
Jan 04 jQuery
Node.js log4js日志管理详解
Jul 31 Javascript
使用Nuxt.js改造已有项目的方法
Aug 07 Javascript
VUE引入第三方js包及调用方法讲解
Mar 01 Javascript
javascript中call,apply,callee,caller用法实例分析
Jul 24 Javascript
基于Web Audio API实现音频可视化效果
Jun 12 Javascript
JS实现躲避粒子小游戏
Jun 18 Javascript
html的DOM中document对象images集合用法实例
Jan 21 #Javascript
浅谈javascript面向对象程序设计
Jan 21 #Javascript
html的DOM中Event对象onabort事件用法实例
Jan 21 #Javascript
封装好的一个万能检测表单的方法
Jan 21 #Javascript
html的DOM中Event对象onblur事件用法实例
Jan 21 #Javascript
JS简单计算器实例
Jan 20 #Javascript
jQuery元素的隐藏与显示实例
Jan 20 #Javascript
You might like
php array_slice函数的使用以及参数详解
2008/08/30 PHP
php 验证码制作(网树注释思想)
2009/07/20 PHP
php关于array_multisort多维数组排序的使用说明
2011/01/04 PHP
如何使用Gitblog和Markdown建自己的博客
2015/07/31 PHP
php处理静态页面:页面设置缓存时间实例
2017/06/22 PHP
文本框中,回车键触发事件的js代码[多浏览器兼容]
2010/06/07 Javascript
JavaScript Date对象 日期获取函数
2010/12/19 Javascript
js querySelector和getElementById通过id获取元素的区别
2012/04/20 Javascript
jQuery 图片切换插件(代码比较少)
2012/05/07 Javascript
一行代码实现纯数据json对象的深度克隆实现思路
2013/01/09 Javascript
基于javascipt-dom编程 table对象的使用
2013/04/22 Javascript
jquery实现点击label的同时触发文本框点击事件的方法
2015/06/05 Javascript
举例说明JavaScript中的实例对象与原型对象
2016/03/11 Javascript
JS实现iframe自适应高度的方法(兼容IE与FireFox)
2016/06/24 Javascript
Laravel admin实现消息提醒、播放音频功能
2019/07/10 Javascript
python基础教程之数字处理(math)模块详解
2014/03/25 Python
浅谈Python中用datetime包进行对时间的一些操作
2016/06/23 Python
Python使用re模块正则提取字符串中括号内的内容示例
2018/06/01 Python
python for 循环获取index索引的方法
2019/02/01 Python
python解压TAR文件至指定文件夹的实例
2019/06/10 Python
简单了解为什么python函数后有多个括号
2019/12/19 Python
使用python3 实现插入数据到mysql
2020/03/02 Python
Python3爬虫关于识别点触点选验证码的实例讲解
2020/07/30 Python
python类共享变量操作
2020/09/03 Python
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?
2016/08/18 面试题
编程输出如下图形
2013/11/24 面试题
送货司机岗位职责
2013/12/11 职场文书
新护士岗前培训制度
2014/02/02 职场文书
留学推荐信范文
2014/05/10 职场文书
秋季运动会广播稿(30篇)
2014/09/13 职场文书
医学生自荐信范文
2015/03/05 职场文书
2015年煤矿工作总结
2015/04/28 职场文书
2015年节能降耗工作总结
2015/05/22 职场文书
交通安全主题班会
2015/08/12 职场文书
导游词之无锡唐城
2019/12/12 职场文书
Java 深入探究讲解简单工厂模式
2022/04/07 Java/Android