美文网首页
Javascript 学习笔记

Javascript 学习笔记

作者: lazysong | 来源:发表于2018-01-26 16:25 被阅读0次
    • JavaScript 中的变量类型
      JavaScript 中变量可以存储两种类型的值,即原始值和引用值。
      5种原始类型:Boolean, Number, String, Null, Undefined
      其中 Null 和 Undefined 这两种类型都只有一个值,分别是 null 和 undefined,undefined 表示声明了变量但是未初始化,null 表示尚未存在的对象
      引用类型使用 typeof 之后都会统一返回 Object(null 也会返回 Object)
      参考资料:《JavaScript 高级程序设计》 Nicholas C.Zakas 著, 曹力 张欣 等译
    • Array 对象创建之后,可以灵活地改变其长度
    var arr = [1, 2];
    console.log(arr.length); //2
    arr.length = 4; //通过设置length来扩展arr的长度
    console.log(arr.length);//4
    console.log(arr);// 1,2,,
    arr[4] = 4; //通过直接扩展下标来扩展arr的长度
    console.log(arr.length); //5
    console.log(arr);// 1,2,,,4
    //直接通过下标越界读取arr的内容不会引起arr扩容
    console.log(arr[5]);//undefined
    console.log(arr.length); //长度依然为5
    

    廖雪峰教程链接

    • 模板字符串
      能否使用需要看浏览器是否支持
    var name = '小明';
    var age = 20;
    var message = `你好, ${name}, 你今年${age}岁了!`;
    alert(message);
    
    • Array.protype.splice()方法
      array.splice(start[, deleteCount[, item1[, item2[, ...]]]])
      start表示开始的下标,从0开始(-1表示倒数第一个),deleteCount表示从start开始连续删除的元素个数, item列表表示要插入的元素列表。
      通过这三个参数的组合,可以对array实现包括删除,替换等丰富的操作。
      当只传入一个参数的时候,表示删除从该下标开始(包含该下标)的所有元素
      参考文档
    • JavaScript 中的apply,call和bind
      ECMAScript规范中给所有的函数都实现了 call 和 apply 两个函数,call() 接收上下文对象和一个参数列表,apply() 接收上下文对象和所有参数组成的数组,apply() 和 call() 都会立刻执行,作用包括改变 this 的指向,调用函数,???
      call() 和 bind() 接收参数的方式都是一样的,区别在于 bind() 返回的是函数,不会立即执行,原来函数的上下文不会被影响。bin()也是在 EcmaScript5 中扩展的。
    • JavaScript的变量提升
      JavaScript 在处理函数中变量声明的时候,会先把函数内部所有声明的变量提升到函数顶部。所以我们会看到一些先使用后声明的语句情况也能够工作。但是要注意的是,虽然声明会被提升到顶部,但是赋值并不会。
    'use strict'
    function test() {
      var x = "Today is ";
      console.log(x + y); // Today is undefined
      y = "Monday";
      console.log(x + y); // Today is Monday
      var y;
    }
    test();
    
    • JavaScript 中的 this
      不同于我们常见的面向对象编程语言(如java和C++),JavaScript并没有真正意义上的类。通常JavaScript 中使用的对象创建方式是通过构造函数。构造函数并不属于某一个类,而是一个普通的函数,当使用 new 标记来调用这个函数的时候,它就成为了一个能够创建对象的构造函数。
    function Company(companyName, companyCode) {
        this.companyName = companyName;
        this.companCode = companyCode;
    }
    
    var company = new Company("google", 1001);
    console.log(company);  //  打印: Company { companyName: 'google', companCode: 1001 }
    
    function mockContext() {
        var company1 = new Company("facebook", 1000);
        console.log(company1); // 打印:Company { companyName: 'facebook', companCode: 1000 }
        Company.call(company1, "apple", 1002);
        console.log(company1); // 打印:Company { companyName: 'apple', companCode: 1002 }
    }
    mockContext();
    

    函数 Company() 实际上就是一个普通的函数,函数体内部的 this 指向的一直是调用该函数的对象,而这个对象会随着上下文的变化而不同。当我们使用 new 符号来调用 Company() 函数的时候,new 符号会先创建一个默认的对象(object),this 会指向这个对象。当正常使用 Company() 函数的时候,this 指向的就是调用它的那个对象
    this 这么神奇的特性,实际上在编程中会带来一些问题,就是我们需要时刻注意 this 的指向。我们经常会在函数的内部看到这样一种写法:var that = this; 这就是为了在函数内部运行过程中进入到其他的对象中,this 指向发生变化之后,仍然可以通过 that 来使用原来的 this 指向的内容。

    • jQuery 中的 deferred 对象
      deferred 对象是为了完善 jQuery 中的异步回调机制而设计的
      参考资料

    相关文章

      网友评论

          本文标题:Javascript 学习笔记

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