浅谈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中==与===操作符的比较
Mar 21 Javascript
限制上传文件大小和格式的jQuery插件实例
Jan 24 Javascript
Underscore源码分析
Dec 30 Javascript
Javascript获取随机数的实现方法
Jun 22 Javascript
半个小时学json(json传递示例)
Dec 25 Javascript
BootStrap Fileinput初始化时的一些参数
Dec 30 Javascript
node.js中debug模块的简单介绍与使用
Apr 25 Javascript
React中使用collections时key的重要性详解
Aug 07 Javascript
Angularjs上传文件组件flowjs功能
Aug 07 Javascript
vue 2.x 中axios 封装的get 和post方法
Feb 28 Javascript
vue填坑之webpack run build 静态资源找不到的解决方法
Sep 03 Javascript
详解TypeScript+Vue 插件 vue-class-component的使用总结
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
《忧国的莫里亚蒂》先导宣传图与STAFF公开
2020/03/04 日漫
php懒人函数 自动添加数据
2011/06/28 PHP
linux下安装php的memcached客户端
2014/08/03 PHP
PHP Smarty模版简单使用方法
2016/03/30 PHP
php 生成Tab键或逗号分隔的CSV
2016/09/24 PHP
PHP创建多级目录的两种方法
2016/10/28 PHP
php pdo操作数据库示例
2017/03/10 PHP
javascript一个无懈可击的实例化XMLHttpRequest的方法
2010/10/13 Javascript
JQuery拖拽元素改变大小尺寸实现代码
2012/12/10 Javascript
JS数组去重与取重的示例代码
2014/01/24 Javascript
JS中三目运算符和if else的区别分析与示例
2014/11/21 Javascript
jquery.map()方法的使用详解
2015/07/09 Javascript
静态页面实现 include 引入公用代码的示例
2017/09/25 Javascript
JavaScript深拷贝和浅拷贝概念与用法实例分析
2018/06/07 Javascript
Electron中实现大文件上传和断点续传功能
2018/10/28 Javascript
简单的抓取淘宝图片的Python爬虫
2014/12/25 Python
利用aardio给python编写图形界面
2017/08/21 Python
python、java等哪一门编程语言适合人工智能?
2017/11/13 Python
关于Python正则表达式 findall函数问题详解
2018/03/22 Python
python获取本机所有IP地址的方法
2018/12/26 Python
python两个_多个字典合并相加的实例代码
2019/12/26 Python
python垃圾回收机制(GC)原理解析
2019/12/30 Python
对Python中 \r, \n, \r\n的彻底理解
2020/03/06 Python
在matplotlib中改变figure的布局和大小实例
2020/04/23 Python
css sprite简单实例
2016/05/23 HTML / CSS
Swisse官方海外旗舰店:澳大利亚销量领先,自然健康品牌
2017/12/15 全球购物
写一个函数返回1+2+3+…+n的值(假定结果不会超过长整型变量的范围)
2014/09/05 面试题
儿科护士实习自我鉴定
2013/10/17 职场文书
高职教师岗位职责
2013/12/24 职场文书
火车的故事教学反思
2014/02/11 职场文书
团购业务员岗位职责
2014/03/15 职场文书
《梅花魂》教学反思
2014/04/30 职场文书
市场部岗位职责范本
2015/04/15 职场文书
穆斯林的葬礼读书笔记
2015/06/26 职场文书
红与黑读书笔记
2015/06/29 职场文书
Java 深入探究讲解简单工厂模式
2022/04/07 Java/Android