js语言精粹总结

282 阅读2分钟

语句

下列值被当作假

  • false,null,undefined,空字符串,0,NAN
  • 其他所有的值都会被当做真,包括true,字符串'false',和所有对象

函数

函数调用

  • 每个函数都有this和arguments

  • this取决于调用模式。js中有四种调用模式,分别是方法调用模式,函数调用模式,构造器调用模式,apply调用模式。

  • 方法调用模式

    • 当一个函数被保存为对象的属性时,称这个函数为方法。
      • 当一个方法被调用的时候,this指向该对象。
          <!-- 创建myObject对象,有一个value属性和一个increment方法
          increment方法接受一个可选的参数,如果参数不是个数组,默认是1 -->
          var myObject = {
              value:0,
              increment:function(inc){
                  this.value += typeof inc == 'number'?inc:1
              }
          }
          myObject.increment();
          console.log(myObject.value) //1
          myObject.increment(2)
          console.log(myObject.value) //3
      
  • 函数调用模式

    • 当一个函数并非一个对象的属性时,就被当作函数调用。
      • 函数调用模式的时候。this被绑定到全局对象。
      • 如果想要绑定到当前对象,解决方法:let that = this;
  • 构造器调用模式

    • 如果一个函数前面带上new 调用,那么将会创建一个链接到该函数到prototype成员的新对象,同时this会绑定到这个新对象上面。
        var Quo = function(string){
            this.status = string
        }
        Quo.prototype.get_status= function(){
            return this.status;
        }
        var myQuo = new Quo('haha')
        console.log(myQuo.get_status()) //haha
    
  • Apply调用模式

    • apply方法让我们构建一个参数数组传递给调用函数。
    • apply方法接受两个参数。一个是要绑定给this的值,第2个是参数数组

参数:arguments

  • 函数的参数arguments是一个类数组,拥有length属性。

返回 return

  • 一个函数总有返回值,如果没有,就是undefined。
  • 如果函数调用时在前面加了new,并且返回值不是一个对象,则返回this(绑定的新对象)

扩充类型的功能

  • 使用Object.prototype添加方法
    • 举例:通过给Function.prototype增加方法来使得该方法对所有函数可用。
        Function.prototype.method = function(name,func){
            this.prototype[name] = func;
            return this;
        }
    

数组

  • splice(n,m):n是开始删除的序号,m是要删除的个数
  • concat():产生一个新数组,连接数组。
  • slice(start,end):截取字符串,【start,end)