浅谈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 相关文章推荐
javascript中对对层的控制
Dec 29 Javascript
JavaScript 异步调用框架 (Part 2 - 用例设计)
Aug 03 Javascript
JS与框架页的操作代码
Jan 17 Javascript
JS实现下拉框的动态添加(附效果)
Apr 03 Javascript
Jquery 改变radio/checkbox选中状态,获取选中的值(示例代码)
Dec 12 Javascript
checkbox选中与未选中判断示例
Aug 04 Javascript
使用JS获取当前地理位置方法汇总
Dec 18 Javascript
JS实现选项卡实例详解
Nov 17 Javascript
JS实现简单的天数计算器完整实例
Apr 28 Javascript
JQuery form表单提交前验证单选框是否选中、删除记录时验证经验总结(整理)
Jun 09 jQuery
vue 使用插槽分发内容操作示例【单个插槽、具名插槽、作用域插槽】
Mar 06 Javascript
交互式可视化js库gojs使用介绍及技巧
Feb 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 广告调用类代码(支持Flash调用)
2011/08/11 PHP
浅析Yii中使用RBAC的完全指南(用户角色权限控制)
2013/06/20 PHP
php+Mysqli利用事务处理转账问题实例
2015/02/11 PHP
php上传图片客户端和服务器端实现方法
2015/03/30 PHP
学习php设计模式 php实现桥梁模式(bridge)
2015/12/07 PHP
php实现简单的权限管理的示例代码
2017/08/25 PHP
CI框架附属类用法分析
2018/12/26 PHP
封装了一个js图片轮换效果的函数
2011/09/28 Javascript
jQuery AjaxQueue改进步骤
2011/10/06 Javascript
iframe的onreadystatechange事件在firefox下的使用
2014/04/16 Javascript
初步了解javascript面向对象
2015/11/09 Javascript
jquery实现简单的瀑布流布局
2016/12/11 Javascript
js正则表达式验证表单【完整版】
2017/03/06 Javascript
80%应聘者都不及格的JS面试题
2017/03/21 Javascript
react-native-video实现视频全屏播放的方法
2018/03/19 Javascript
在vue-cli项目中使用bootstrap的方法示例
2018/04/21 Javascript
解决iview多表头动态更改列元素发生的错误的方法
2018/11/02 Javascript
Windows下支持自动更新的Electron应用脚手架的方法
2018/12/24 Javascript
基于javascript的拖拽类封装详解
2019/04/19 Javascript
详解Webpack如何引入CDN链接来优化编译后的体积
2019/06/21 Javascript
nodejs使用Sequelize框架操作数据库的实现
2020/10/21 NodeJs
python中正则的使用指南
2016/12/04 Python
python同时遍历数组的索引和值的实例
2018/11/15 Python
python requests post多层字典的方法
2018/12/27 Python
pandas 层次化索引的实现方法
2019/07/06 Python
详解Python可视化神器Yellowbrick使用
2019/11/11 Python
python给图像加上mask,并提取mask区域实例
2020/01/19 Python
python 实现字符串下标的输出功能
2020/02/13 Python
傲盾软件面试题
2015/08/17 面试题
网络维护中文求职信
2014/01/03 职场文书
爱情检讨书大全
2014/01/21 职场文书
推荐信格式范文
2014/05/09 职场文书
办公用房租赁协议书
2014/11/29 职场文书
违纪检讨书
2015/01/27 职场文书
同事打架检讨书
2015/05/06 职场文书
2015年大学教师工作总结
2015/05/20 职场文书