浅谈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 相关文章推荐
JQuery 初体验(建议学习jquery)
Apr 25 Javascript
Jquery中国地图热点效果-鼠标经过弹出提示层信息的简单实例
Feb 12 Javascript
node-webkit打包成exe文件被360误报木马的解决方法
Mar 11 Javascript
详解AngularJS中的表达式使用
Jun 16 Javascript
JSON遍历方式实例总结
Dec 07 Javascript
谈一谈js中的执行环境及作用域
Mar 30 Javascript
jQuery自定义数值抽奖活动代码
Jun 11 Javascript
解决ajax不能访问本地文件问题(利用js跨域原理)
Jan 24 Javascript
Vue实现路由跳转和嵌套
Jun 20 Javascript
Vue Cli与BootStrap结合实现表格分页功能
Aug 18 Javascript
vue异步加载高德地图的实现
Jun 19 Javascript
Angular 实现输入框中显示文章标签的实例代码
Nov 07 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中的PHP_EOL换行符详细解析
2013/10/26 PHP
js+php实现静态页面实时调用用户登陆状态的方法
2015/01/04 PHP
轻轻松松学习JavaScript
2007/02/25 Javascript
对xmlHttp对象的理解
2011/01/17 Javascript
理解javascript中DOM事件
2015/12/25 Javascript
Jquery uploadify上传插件使用详解
2016/01/13 Javascript
超漂亮的Bootstrap 富文本编辑器summernote
2016/04/05 Javascript
AngularJS Bootstrap详细介绍及实例代码
2016/07/28 Javascript
全面解析Bootstrap表单样式的使用
2016/09/09 Javascript
用AngularJS来实现监察表单按钮的禁用效果
2016/11/02 Javascript
JavaScript中localStorage对象存储方式实例分析
2017/01/12 Javascript
JQuery中Ajax的操作完整例子
2017/03/07 Javascript
jquery select插件异步实时搜索实例代码
2017/10/20 jQuery
使用layui 渲染table数据表格的实例代码
2018/08/19 Javascript
使用React代码动态生成栅格布局的方法
2020/05/24 Javascript
[01:09:01]完美世界DOTA2联赛循环赛 Magma vs PXG BO2第一场 10.28
2020/10/28 DOTA
python实现带验证码网站的自动登陆实现代码
2015/01/12 Python
python判断字符串编码的简单实现方法(使用chardet)
2016/07/01 Python
用Python登录好友QQ空间点赞的示例代码
2017/11/04 Python
简单了解django处理跨域请求最佳解决方案
2020/03/25 Python
Python %r和%s区别代码实例解析
2020/04/03 Python
如何写python的配置文件
2020/06/07 Python
python中执行smtplib失败的处理方法
2020/07/01 Python
15个应该掌握的Jupyter Notebook使用技巧(小结)
2020/09/23 Python
python如何利用Mitmproxy抓包
2020/10/10 Python
python自动从arxiv下载paper的示例代码
2020/12/05 Python
英国著名的茶叶品牌:Whittard of Chelsea
2016/09/22 全球购物
《得道多助,失道寡助》教学反思
2014/04/19 职场文书
平安校园建设方案
2014/05/02 职场文书
班风学风建设方案
2014/05/06 职场文书
镇副书记专题民主生活会对照检查材料思想汇报
2014/10/02 职场文书
2014年保卫部工作总结
2014/11/21 职场文书
投资意向协议书
2015/01/29 职场文书
政协工作总结2015
2015/05/20 职场文书
小孩不笨观后感
2015/06/03 职场文书
微信早安问候语
2015/11/10 职场文书