语句
下列值被当作假
- 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)