zoukankan      html  css  js  c++  java
  • javascript 忍者秘籍读书笔记

    书名

    "学徒"=>"忍者"

    性能分析

    console.time('sss')
    console.timeEnd('sss')
    

    函数

    函数是第一类对象

    通过字面量创建
    function minjaFunction(){}
    
    在变量或数组或者对象中的函数
    
    let obj = {
        name: 'zhangsan',
        age() {
            return 1
        }
    };
    let arr = [1, 2, 3, 4, () => {
        return 1;
    }];
    let nums=()=>{}
    
    作用函数的参数来传递(高阶函数)
    
    add=(x,y,f)=>{
        return f(x)+f(y)
    };
    add(1,3,x=>x);
    
    作用函数的返回值(闭包)
    
    add=()=>{
        let a=1;
        return ()=>{
            console.log(a)
        }
    }
    
    具有动态创建和分配的属性(回调函数)
    
    var add=function(){
        console.log(add.age);
    };
    add.age='zhangsan';
    add();
    
    回调函数
    函数作用另一个函数的参数,随后通过参数来调用该函数
    function useless(nin){
        return nin();
    }
    

    函数和对象的唯一区别

    函数是可调用的,函数会被调用执行某项动作或者功能

    纯函数缓存??

    定义函数的方式

    函数声明
    function myFunction(){}
    
    箭头函数(lambda函数)
    item=>item*2
    
    函数构造函数
    let add=new Function('a','b','return a+b')
    console.log(add(1, 3));
    
    生成器构造函数
    
    function* myGen(){
        yield 1;
    }
    
    let a = myGen();
    console.log(a.next());
    
    函数表达式
    let a=()=>{}
    
    立即执行函数
    ()()
    +function(){}();
    -function(){}();
    !function(){}();
    ~function(){}();
    

    函数的实参+形参

    形参是定义的时候传递的变量
    实参是调用的时候传递的变量
    
    剩余参数
    ...
    默认参数
    a=(a,b=0)=>{}
    

    函数调用

    this: 调用函数的上下文对象
    
    arguments 参数表示函数调用过程中传递的所有参数
    ... 代替了arguments要做的事
    let a=(...b)=>{console.log(b)} //箭头函数没有arguments
    
    function a(){
        console.log(Array.from(arguments));
    }
    > argumeng.length
    > arguments是个伪数组
    
    function fun(a = 3) {
        arguments[0]=133;
        console.log(a);
    }
    fun(10);//10
    arguments只看调用的参数
    
    调用函数的四种方式
    * 作用函数
    	> func()   直接调用
    	> 作用函数被调用 this->window
    * 作为方法
    	> a.func()  关联在一个对象上,实现面向对象编程
    	> 作用方法被调用,this-> 这个对象
    * 构造函数
    	> new func() 实例化一个新的对象
    	> new 调用函数会触发
    		> 创建一个新的空对象
    		> 该对象作用this参数传递给构造函数
    		> 新构造的对象作为new运算符的返回值
        
    * 通过函数的apply和call
    	> func.apply(null,[a,b])
    	> func.call(null,a,b)
    * 通过bind() 改变this的指向  需要在后面加上() 让他执行
    

    ..........................................................................................................................................................

  • 相关阅读:
    “无法更新EntitySet“*****”,因为它有一个DefiningQuery,而元素中没有支持当前操作的元素”问题的解决方法
    Web.Config全攻略
    C#常用的正则
    Asp.Net MVC2 Json
    webservice+Jquery返回Json格式【原创】
    JAVA线程池介绍以及简单实例
    从程序员到项目经理(17):你不是一个人在战斗思维一换天地宽
    SELECT INTO 和 INSERT INTO SELECT 两种表复制语句
    多表对应更新(跨服务器).sql
    sql导出excel.sql
  • 原文地址:https://www.cnblogs.com/fangdongdemao/p/10821213.html
Copyright © 2011-2022 走看看