前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JS函数的属性

JS函数的属性

作者头像
大道七哥
发布2019-09-10 20:53:53
8K0
发布2019-09-10 20:53:53
举报
文章被收录于专栏:大道七哥大道七哥

1.arguments.callee

代码语言:javascript
复制
//经典的阶乘(递归)函数
<span style="color: #0000ff;">function</span> factorial(num) {
    if (num <= 1) {
        <span style="color: #0000ff;">return</span> 1;
    } else {
        <span style="color: #0000ff;">return</span> num * factorial(num - 1);
    }
}
//消除函数名的耦合现象
<span style="color: #0000ff;">function</span> factorial(num) {
    if (num <= 1) {
        <span style="color: #0000ff;">return</span> 1;
    } else {
        <span style="color: #0000ff;">return</span> num * arguments.callee(num - 1);//函数内部属性 [callee]
    }
}
var trueFactorial = factorial;
factorial = <span style="color: #0000ff;">function</span> () {
    <span style="color: #0000ff;">return</span> 0;
};
alert(trueFactorial(5));//120  使用callee属性 接触函数名耦合状态 可以继续使用递归 否则返回0
alert(factorial(5));    //0

2.Length:表示函数希望接收的命名参数的个数

3.prototype:在创建自定义引用类型以及实现继承时,该属性的作用极为重要,该属性不可枚举,因此使用for-in 无法发现

方法:

1.apply()和call()

用途:在特定的作用域中调用函数,等于设置函数体内this对象的值

代码语言:javascript
复制
<span style="color: #0000ff;">        function</span> <span style="color: #ff0000;">sum</span>(num1, num2) {
            <span style="color: #0000ff;">return</span> num1 + num2;
        }
        <span style="color: #0000ff;">function</span> callSum(num1, num2) {
            <span style="color: #0000ff;">return</span> <span style="color: #ff0000;">sum</span>.<span style="color: #003300;">call</span>(this, num1, num2);//明确传入每一个参数
        }
        <span style="color: #0000ff;">function</span> callSum1(num1, num2) {
            <span style="color: #0000ff;">return</span> <span style="color: #ff0000;">sum</span>.<span style="color: #333399;">apply</span>(this, arguments);//传入arguments对象
        }
        <span style="color: #0000ff;">function</span> callSum2(num1, num2) {
            <span style="color: #0000ff;">return</span> <span style="color: #ff0000;">sum</span>.apply(this, [num1, num2]);//传入数组
        }
 
        alert(callSum1(10, 10));//20
        alert(callSum2(10, 10));//20

2.bind():创建一个函数的实例,其this的值会被绑定到传给bind()函数的值

代码语言:javascript
复制
window.color = "red";
  var o = { color: "blue" };
  <span style="color: #333399;">function</span> sayColor() {
      alert(this.color);
  }
  var objectSayColor=sayColor.bind(o);
  objectSayColor();//blue;

-END-

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015-03-26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档