JavaScript高级编程 5.5-6

作者: RGXMG | 来源:发表于2017-09-07 00:34 被阅读0次

1.function是对象、创建的也是对象引用

三种创建方式 最后一种不推荐
M1:

function func(){
  alert("使用很普遍的函数创建方式");
}

M2:

var func=function(){
  alert("直接储存在变量当中");
 }

M3:

var func=function("参数1","参数2","参数n","alert("不要花括号,直接创建")");

2. 在代码运行之前,解析器经过 代码提升的过程 首先将函数声明创建出来 确保函数能够正常使用 再将声明函数提到顶部 然后执行

函数调用在函数创建之前,结果并不会出错。

var Vsum=sum(10);
alert(Vsum); 
function sum(maxV){
  "use strict"
  for(var i=0;i<maxV;i++){
    var sum+=0;
  }
  return sum;
}

另一种情况就会出错。

var Vsum=sum(10);
alert(Vsum); 
var sum=function(maxV){
  "use strict"
  for(var i=0;i<maxV;i++){
    var sum+=0;
  }
  return sum;
}    //unexpected identifier
出错的原因就是因为函数创建位于顶部,但是函数的声明不是

3.函数内部拥有argument和this俩个特殊对象

argument是保存拥有它的函数的参数
argument拥有一个属性callee、它是一个指针 能够指向拥有argument对象的函数

这个方法可以用来解耦合 经典例子 递归实现阶乘

  alert(factorial(10));
  function factorial(Vmax){   //Vmax>0
      if(Vmax<=1)return 1;
      else{
        return Vmax*factorial(Vmax-1);  
  }
 }
利用arguments节耦合
  alert(factorial(10));
  funciton factorial(Vmax){
    if(Vmax<=1)return 1;
    else{
      return Vmax*arguments.callee(Vmax-1);
      }
  }
但在严格模式下使用会出错

4. this对象 类似java和c#中的this 都是指向当前的作用域 当没有其他作用域时候 指向window 例子:

5. ECMAScript5还定义函数对象另一个属性caller、它保存着引用当前函数的函数的引用、如果为window则为null 实例:

除此之外、ECMAScript还为每个函数对象定义了length和prototype属性方法。length表示每个函数对象希望能接受几个参数 prototype则是真正保存着函数中所有实例方法真正所在 实际上toString和ValueOf都是保存在prototype名下 只是通过各自的实例对象调用罢了

每个函数都包含着非继承而来的方法 apply和call方法

apply和call方法都接受俩个参数
第一个参数都接收作用域this
第二个参数apply可以接收数组参数或者arguments(保存当前函数的参数) call则只能接收按顺序排列单个排列的参数

需要注意的是 apply和call最主要用作扩充函数的作用域、而非传递函数。
window.color="red";//全局属性
var o_bule={
    color:"bule"
}
 function toStringColor(){
         console.log(this.color);
}
toStringColor.call(this);//red
toStringColor.call(o_bule);//bule
toStringColor().call(window); //red

相关文章

  • JavaScript高级编程 5.5-6

    1.function是对象、创建的也是对象引用 三种创建方式 最后一种不推荐M1: M2: M3: 2. 在代码运...

  • JavaScript入门学习书籍到阶段书籍

    入门:《深入浅出JavaScript》《JavaScript DOM编程艺术》 《JavaScript DOM高级...

  • 今后的前端学习计划

    先列一下已经看过的书吧。 Javascript dom 高级编程 Javascript语言精粹 高性能javasc...

  • 【JavaScript】技术参考资料

    JS基础、高级、进阶 MDN·JavaScript 函数式编程 阮一峰老师的入门简介: 函数式编程初探、函数式编程...

  • JavaScript基本语法

    JavaScript历史 JavaScript,通常缩写为JS,是一种高级的,解释执行的编程语言[5]。JavaS...

  • 001 Array 类型

    《JavaScript 高级程序设计》这本书被称为 JavaScript 编程的圣经,又称为红宝书。记得这本书是我...

  • freeCodeCamp 旅途5 - JavaScript 和

    JavaScript 基础 JavaScript 是一门所有现代 Web 浏览器都支持的高级编程语言。JavaSc...

  • 细说Solidity语言

    Solidity是专门为实现智能合约创建的高级编程语言。 借鉴了c++、python和javascript编程语言...

  • Javascript WEB前端开发总结

    初始JavaScript JavaScript,通常缩写为JS,是一种高级的,直譯語言的编程语言。 JavaScr...

  • 已看书籍- 前端

    1、JavaScript_DOM编程艺术第二版(中文) 2、JavaScript高级程序设计(第3版) 3、Web...

网友评论

    本文标题:JavaScript高级编程 5.5-6

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