欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

javascript引用类型基础讲解

程序员文章站 2022-05-17 14:54:23
引用类型 function类型; 1,命名方式: 函数声明语法定义: function sum(){} 函数表达式定义: var sum = function(){}; fu...

引用类型

function类型;

1,命名方式:

函数声明语法定义: function sum(){} 函数表达式定义: var sum = function(){}; function构造函数:var sum = new function("num1","num2","return num1 + num2");//因为会导致解析两次代码(一解析常规ecmascript代码,二解析传入构造函数中的字符串),影响性能

2 没有重载,同名函数后者会覆盖前者

3 函数声明和函数表达式的区别:解析器会先读取函数声明,并在执行任何代码之前可用;而函数表达式需要等到解析器执行到所在代码行,才会被解析执行

    alert(sum(10,10));
    function sum(num1,num2){return num1+num2}
    //但是 函数表达式会报错
    var sum = function(num1,num2){return num1+num2}; //报错

4 可作为值

因为函数名本身就是变量,可用作为参数传给另一个函数,也可以作为另一个函数的结果返回

    function add(num){return num+10;}
    var result = callsome(add,10);//函数作为参数
    console.log(result);//20
//--------函数作为另一个函数的结果返回---------------------
    function test(prop){
  return function(obj1,obj2){
    var value1 = obj1[prop];
    var value2 = obj2[prop];
    if(value1 < value2){
      return -1;
    }else if(value1 > value2){
      return 1;
    }else {
      return 0;
    }
  };
}
var data = [{name:"nick",age:10},{name:"lick",age:20}];
data.sort(test("name"));
console.log(data[0].name + "||" + data[0].age);//lick||20
data.sort(test("age"));
console.log(data[0].name + "||" + data[0].age);//nick||10

5函数内部属性:这里有两个特殊对象

1)arguments:保存函数参数;关于callee属性,它是一个指针,可以指向这个arguments对象的函数;

    //消除耦合现象
    function test(num){
        if(num<=1){return 1;}else{return num*arguments.callee(num-1)}
    }

2)this:引用对应函数执行环境对象

6函数属性和方法:

1)length属性表示接受参数的个数function test(num){alert(num);} alert(test.length);//1

2)prototype

3)apply()

4)call()