美文网首页
Function类型

Function类型

作者: 蜗牛的进阶之路 | 来源:发表于2016-08-23 11:26 被阅读0次

一、概念

Function(函数)类型实际上是对象。每个函数都是 Function 类型的 实例,而且都与其他引用类型一样具有属性和方法。由于函数是对象,因此函数名实际上也 是一个指向函数对象的指针


二、作为值的函数

ECMAScript 中的函数名本身就是变量,所以函数也可以作为值来使用。也就是说,不 仅可以像传递参数一样把一个函数传递给另一个函数,而且可以将一个函数作为另一个函数 的结果返回。

function box(sumFunction, num){
     return sumFunction(num);
}
function sum(num) {
     returnnum+10;
}
varresult=box(sum,10);

三、函数内部属性

  • arguments
function box(num){
   if(num<=1){
         return 1; 
      }
  else{
         return  num*arguments.callee(num-1);//使用 callee 来执行自身 等同于returnnum*box(num-1);
     }
 }
  • this
window.color='红色的'; //全局的 或者写成var color = '红色的'
alert(this.color); //打印全局的 color

var box={
   color:'蓝色的', //局部的 color 
   sayColor :function(){ 
           alert(this.color); //此时的 this 只能 box 里的 color 
                       } 
        };

box.sayColor(); //打印局部的 color 
alert(this.color); //还是全局的

四、函数属性和方法

  • length 属性表示函数希望接收的命名参数的个数
  functionbox(name,age){
         alert(name+age); 
   }
   alert(box.length);
  • prototype 属性 (原型)
    为一个特定类声明通用的变量或者函数。

    function Test(){
    
    }
    alert(Test.prototype); // 输出 "Object"
    
  • 用prototype给对象 添加属性

 function Fish(name, color){
  this.name=name;
  this.color=color;
 }
Fish.prototype.livesIn="water";
Fish.prototype.price=20;
  • 用prototype给对象添加函数
    function Employee(name, salary)
    {
      this.name=name;               
      this.salary=salary;
    }

   Employee.prototype.getSalary=function getSalaryFunction()
    {
     return this.salary;
    }
    Employee.prototype.addSalary=function addSalaryFunction(addition)
    {
     this.salary=this.salary+addition;
    }
  • 每个函数都 包含这两个非继承而来的方法。apply()和 call()

var color='红色的'; //或者 window.color='红色的';
var box={
color:'蓝色的'
};
function sayColor(){
alert(this.color);
}
sayColor(); //作用域在 window
sayColor.call(this); //作用域在 window
sayColor.call(window); //作用域在 window
sayColor.call(box); //作用域在 box,对象冒充

注:

使用 call()或者 apply()来扩充作用域的最大好处,
就是对象不需要与方法发生任何耦合 关系(耦合,
就是互相关联的意思,
扩展和维护会发生连锁反应)。
也就是说,
box 对象和 sayColor()方法之间不会有多余的关联操作,
比如 box.sayColor=sayColor;



相关文章

  • Function 类型

    定义函数的方式: 函数内部属性 arguments 它是一个类数组对象,包含着传入函数中的所有参数。 虽然 arg...

  • Function类型

    函数声明与函数表达式 声明提前 函数表达式的name无法在函数外使用 name只是地址引用,函数本体在内存堆中 引...

  • Function类型

    作为值的函数 把函数本身作为参数传递 函数的返回值作为参数传递 以我小白的眼光来看,此处容易混淆,值得反复思量。 ...

  • Function类型

    函数实际上是对象。函数名是指向函数的指针。使用不带圆括号的函数名是访问函数指针,而非调用函数。 函数定义 函数声明...

  • Function类型

    一、概念 Function(函数)类型实际上是对象。每个函数都是 Function 类型的 实例,而且都与其他引用...

  • Function 类型

    Function 类型 函数实际上是对象。每个函数都是 Function 类型的实例,而且都与其他引用类型一样具有...

  • Function类型

    函数名仅仅是指向函数的指针,函数名与包含对象指针的其他变量没有什么不同。换句话说,一个函数可能会有多个名字,如下面...

  • Function类型

    1.函数实际上是对象。 2.每个函数都是Function类型的实例,而且都与其他引用类型一样具有属性和方法。 3....

  • Swift 学习笔记 - 函数与闭包

    函数 使用函数类型 (Using Function Types) 函数类型作为参数类型 (Function Typ...

  • 引用类型-Function类型

    每个函数都是Function类型的实例,而且都与其他引用类型一样具有属性和方法;由于函数是对象,因此函数名实际上也...

网友评论

      本文标题:Function类型

      本文链接:https://www.haomeiwen.com/subject/pawgsttx.html