函数!关于JavaScript中的函数!!!

函数

定义:方法,封装特定功能的代码
  1. 构造函数(人为分类)
    函数的本质区别在于函数的调用方式。如果使用new调用一个函数没那这个函数理解为构造函数;如果使用()调用,这个函数理解为普通函数。
    不管是构造函数还是普通函数,在内存中都有两块空间,一块表示构函数本身,一块表示函数的原型。
  • 构造函数
    • 用于实例化对象,或者是为对象提供公共的方法。【对象可以调用构造函数原型中的方法】
    • 为了区分普通函数,构造函数一般函数名首字母大写,Object 、Array
      obj.toString();
      • class
        pojo类 用于保存属性
      • class
        service类 用于方法封装
  • 普通函数
    • 方法,实现特定功能
    • 普通函数的函数名首字母小写
      javascript new Object.prototype.toString();
  1. 创建函数
    1)函数声明
    函数的声明会被提升,所以可以在函数声明之前调用函数

function 函数名(形式参数) { }
例如:
// 函数定义
add(1,3); // 可以调用
function add(a,b){
var result = a + b;
return result;
}
// 调用add函数,并且将该函数的返回值返回给total变量
var total = add(1,2)
console.log("1+2 = ",total);

2)函数表达式 

函数本质上就是一个特殊的值,这个值与普通对象一样,创建于堆区,函数名中保存的实际上是这个函数的引用地址。
无法在函数表达式之前调用函数,因为如果使用var声明函数,变量的声明会被提升,函数的值实际上为undefined,是无法调用undefined();

var 函数名 = function(形参){ }

  bar();      // bar is not a function
  var bar = function(){ }
  1. 函数调用
    1)函数名(实参) 调用完成后返回 函数的返回值
    2) new 函数名(实参) , 认为当前函数为构造函数,调用完成后会返回一个新对象
	var a = Number("12")      // 函数,将"12"转换为数字,并且返回
    var a = new Number("12")  // 构造函数,将"12"作为参数,创建一个数字
3)函数名.call(this,实参列表)   // this可以为任意值,表示为该函数中的this赋值
  function add(a,b){
      console.log(this);    // {name:"terry"}
      return a+b;
  }
  add.call({name:"terry"},1,2)

将1赋值给a,将2赋值给b。将{name:“terry”}复制给add的this

  4) 函数名.apply(this,实参数组)
unction add(a,b){
    console.log(this);    // {name:"terry"}
    return a+b;
  }
  add.apply({name:"terry"},[1,2])

将1赋值给a,将2赋值给b。将{name:“terry”}复制给add的this

  1. 函数内部属性
    只有在函数执行的时候才能确定值的属性
    形参:快捷接受实参的方式
    arguments: 是类数组对象,是实参真正保存的位置。
var like_arr = {
    "0":"terry",
    "1":"larry",
    "2":"jacky",
    length:3
  }
  arguments.callee 表示当前函数

this: 当前函数的执行环境对象,与调用方式有关。
var foo = function(){
    console.log("this",this);
  }
  var obj = {
    name:"terry",
    bar:foo
  }
  var arr = [1,2,3,foo];
  1. new foo(); this 指向新构建出来的对象
  2. foo (); this 全局对象,浏览器指向window ,nodejs 指向global
    var foo = function(){
    console.log(this);
    }
  3. obj.bar(); this 指向obj
  4. arr3; this 指向arr
  5. foo.call({name:“terry”}) this指向{name:“terry”}
  6. foo.apply({name:“terry”}) this指向{name:“terry”}
  1. 函数作为返回值
function foo(){
      return function(){
        return "hello world"
      }
    }
    var result = foo()();   // result  "hello world"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值