浅谈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中使用了document和window哪些属性和方法小结
Sep 13 Javascript
JavaScript实现鼠标滑过处生成气泡的方法
May 16 Javascript
JS提交form表单实例分析
Dec 10 Javascript
浅谈Sublime Text 3运行JavaScript控制台
Jun 06 Javascript
JavaScript基于原型链的继承
Jun 22 Javascript
javascript运算符——位运算符全面介绍
Jul 14 Javascript
jQuery获取file控件中图片的宽高与大小
Aug 04 Javascript
jQuery内容过滤选择器用法示例
Sep 09 Javascript
Angular4学习笔记router的简单使用
Mar 30 Javascript
如何安装控制器JavaScript生成插件详解
Oct 21 Javascript
简单了解JavaScript异步
May 23 Javascript
解决VantUI popup 弹窗不弹出或无蒙层的问题
Nov 03 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
第二节 对象模型 [2]
2006/10/09 PHP
PHP删除数组中特定元素的两种方法
2019/02/28 PHP
thinkPHP5.1框架路由::get、post请求简单用法示例
2019/05/06 PHP
基础的prototype.js常用函数及其用法
2007/03/10 Javascript
js下通过prototype扩展实现indexOf的代码
2010/12/08 Javascript
javascript中类的定义方式详解(四种方式)
2015/12/22 Javascript
javascript实现简单计算器效果【推荐】
2016/04/19 Javascript
基于javascript编写简单日历
2016/05/02 Javascript
详谈javascript精度问题与调整
2017/07/08 Javascript
React-intl 实现多语言的示例代码
2017/11/03 Javascript
Vue Element使用icon图标教程详解(第三方)
2018/02/07 Javascript
vue-cli 引入、配置axios的方法
2018/05/08 Javascript
Bootstrap模态对话框用法简单示例
2018/08/31 Javascript
react 父子组件之间通讯props
2018/09/08 Javascript
Vue-input框checkbox强制刷新问题
2019/04/18 Javascript
JS实现返回上一页并刷新页面的方法分析
2019/07/16 Javascript
使用easyui从servlet传递json数据到前端页面的两种方法
2019/09/05 Javascript
使用Bootstrap做一个朝代历史表
2019/12/10 Javascript
javaScript实现一个队列的方法
2020/07/14 Javascript
Python中使用中文的方法
2011/02/19 Python
python实现k-means聚类算法
2018/02/23 Python
将tensorflow.Variable中的某些元素取出组成一个新的矩阵示例
2020/01/04 Python
python 两个一样的字符串用==结果为false问题的解决
2020/03/12 Python
Python StringIO及BytesIO包使用方法解析
2020/06/15 Python
Puritan’s Pride(普丽普莱)官方网站:美国最大最全的保健品公司之一
2016/10/23 全球购物
优瑞自动咖啡机官网:Jura
2018/09/29 全球购物
美国婴儿和儿童服装购物网站:PatPat
2020/10/01 全球购物
怎么样写好简历中的自我评价
2013/10/25 职场文书
服装促销活动方案
2014/02/23 职场文书
进口业务员岗位职责
2014/04/06 职场文书
2014年端午节演讲稿范文
2014/05/23 职场文书
学校机关党总支领导班子整改工作方案
2014/10/26 职场文书
财务工作失职检讨书
2014/11/21 职场文书
2014年财务经理工作总结
2014/12/08 职场文书
学生保证书
2015/01/16 职场文书
MySQL infobright的安装步骤
2021/04/07 MySQL