zoukankan      html  css  js  c++  java
  • javascript——函数内部属性

     1  <script type="text/javascript">
     2         //在函数内部有两个特殊的属性:arguments 和 this。arguments是一个类数组对象,包含传入的所有参数,
     3         //但是这个对象还有一个名叫callee的属性,该属性是一个指针,指向拥有这个arguments对象的函数。
     4         //请看经典的阶乘函数例子:
     5         function Factorial(num) {
     6             if (num <= 1) {
     7                 return 1;
     8             } else {
     9                 return num * Factorial(num - 1);
    10             }
    11         }
    12 
    13         function Factorial(num) {
    14             if (num <= 1) {
    15                 return 1;
    16             } else {
    17                 return num * arguments.callee(num - 1);
    18             }
    19         }
    20 
    21         //使用第一种方式是没有错的,但是耦合性太高,不太好,函数名改变之后,内部的函数名也要改变
    22         //第二种方式就是低耦合的做法,无论函数名怎么改变都不会影响函数执行。
    23 
    24         //this引用的是函数据以执行的环境对象,或者也可以说是this值
    25         window.color = "red";
    26         var o = {color: "blue"};
    27         function sayColor() {
    28             alert(this.color);
    29         }
    30 
    31         sayColor();//red
    32         o.sayColor = sayColor;
    33         o.sayColor();//blue
    34 
    35 
    36 
    37         //caller属性,保存着调用当前函数的函数的引用,如果是在全局作用域中调用当前函数,它的值为Null
    38         function outer() {
    39             innter();
    40         }
    41 
    42         function innter(){
    43             //alert(innter.caller);//耦合性太高
    44             alert(arguments.callee.caller);
    45         }
    46 
    47         outer();
    48     </script>
  • 相关阅读:
    Median Value
    237. Delete Node in a Linked List
    206. Reverse Linked List
    160. Intersection of Two Linked Lists
    83. Remove Duplicates from Sorted List
    21. Merge Two Sorted Lists
    477. Total Hamming Distance
    421. Maximum XOR of Two Numbers in an Array
    397. Integer Replacement
    318. Maximum Product of Word Lengths
  • 原文地址:https://www.cnblogs.com/goesby/p/4230350.html
Copyright © 2011-2022 走看看