js中强制类型转换和隐式类型转换
1、分别说明 split slice splice join ⽅法的作⽤和参数,并举例
  slice(start,[end])⽅法是对数组进⾏部分截取,该⽅法返回⼀个新数组,参数start是截取的开始数组索引,end参数是要截取的最后⼀个索引,但是不包括最后⼀个。包含了原函数从start到 end 所指定的元素,但是不包括end元素。
  1.如果出现负数就把负数与长度相加后再划分。
2.slice中的负数的绝对值若⼤于数组长度就会显⽰所有数组
3.若参数只有⼀个,并且参数⼤于length,则为空。
4.如果结束位置⼩于起始位置,则返回空数组
5.返回的个数是end-start的个数
6.不会改变原数组
  slice在字符串中,也可以对字符串进⾏切割,空格也算⼀个字符,不会改变原字符串
1<script>
2var a = [1, 2, 3, 4, 5, 6];
3// 1.如果出现负数就把负数与长度相加后再划分。
4        console.log(a.slice(0, -2)); //1,2,3,4 end+length
5// 2.slice中的负数的绝对值若⼤于数组长度就会显⽰所有数组
6        console.log(a.slice(-7)); //1,2,3,4,5,6
7// 3.若参数只有⼀个,并且参数⼤于length,则为空。
8        console.log(a.slice(8));//空
9// 4.如果结束位置⼩于起始位置,则返回空数组
10        console.log((a.slice(3,2)) );
11// 5.返回的个数是end-start的个数
js正则表达式判断数字12        console.log(a.slice(1,5)) ; //返回4个数 2,3,4,5
13// 6.不会改变原数组
14        console.log(a.slice(0,7)) ;
15</script>
  splice(start,deletecount,item)⽅法从array中移除⼀个或多个数组,并⽤新的item替换它们start 起始位置 deletecount 删除位数,item要替换的元素会改变原数组返回值为被删除的字符串,如果有额外的参数,那么item会插⼊到被移除元素的位置上。
1<script>
2var a = [1, 2, 3, 4, 5, 6];
3        alert(a.splice(0,2,'a')) ;
4        alert(a)
5</script>
  split(字符串):string.split(separator,limit)split⽅法把⼀个字符串分隔成字符串数组,可选参数limit可以限制被分割的⽚段数量,如果设置了该参数,返回的⼦串不会多于这个参数指定的数组。如果没有设置该参数,整个字符串都会被分割,不考虑它的长度。separator参数可以是⼀个字符串或⼀个正则表达式,表⽰以什么分隔。如果separator是⼀个空字符,会返回⼀个单字符的数组,不会改变原数组。
1<script>
2var a = 'a,s,d,f,g,h';
3        console.log(a.split('',11)) ;
4        console.log(a.split(',',11)) ;
5</script>
  join()⽅法与split()⽅法相反,⽤于把数组中的所有元素放⼊⼀个字符串。元素是通过指定的分隔符进⾏分隔的。
1<script>
2var a = [1,2,3,4];
3        console.log(a.join()) ;
4</script>
2、举例说明强制类型转换和隐式类型转换
  1、强制类型转换通过 String()、Number()、Boolean()、parseInt() 、 parseFloat() 进⾏强制类型转换
1<script>
2var str = '123' ;
3var num = 123 ;
4var a = 1.2 ;
5var b = 0 ;
6        console.log(Boolean(b)) ;
7        console.log(parseInt(a)) ;
8        console.log(parseFloat(a)) ;
9        console.log(typeof str) ; // string
10        console.log(typeof num) ;  //number
11        console.log(typeof Number(str)) ; //number
12        console.log(typeof String(num)) ;  //string
13</script>
  2、隐式类型转换不同类型的变量⽐较要先转类型,叫做类型转换,类型转换也叫隐式转换。隐式转换通常发⽣在运算符加减乘除,等于,还有⼩于,⼤于等。
  3、字符串加数字,数字就会转成字符串。数字减字符串,字符串转成数字。如果字符串不是纯数字就会转成NaN。字符串减数字也⼀样。两个字符串相减也先转成数字。乘,除,⼤于,⼩于跟减的转换也是⼀样。
1<script>
2        console.log(typeof  10+'10') ;
3        console.log(typeof  10-'10') ;
4        console.log(typeof  10*'10') ;
5        console.log(typeof  10/'10') ;
6        console.log(typeof  '10' + 10) ;
7        console.log(typeof  '10' - 10) ;
8        console.log(typeof  '10' * 10) ;
9        console.log(typeof  '10' / 10) ;
10</script>
3、判断⼀个变量是否是数组的⽅法?(2-3 种)
  1、instanceof操作符
  2、对象的constructor属性
  3、数组的isArray⽅法
1<script>
2var arr = [1,2,34,5,] ;
3        console.log(arr instanceof Array) ; // true
4        console.structor === Array) ; // true
5        console.log(Array.isArray(arr)) ; // true
6</script>
4、什么是原型对象?
  在javascript中,每当定义⼀个对象时,对象中都会包含⼀些预定义的属性prototype,这个属性指向函数的原型对象。
  每个对象都有__proto__属性,但只有函数对象才有prototype属性
  在默认情况下,所有的原型对象都会⾃动获得⼀个constructor属性,这个属性指向prototype属性所在的函数
  structor == Person
  structor == Person
  函数的原型对象是构造函数的⼀个实例(per == Person.prototype)。
5、什么是原型链?
  1、当访问⼀个对象的某个属性时,会先在这个对象本⾝属性上查,如果没有到,则会去它的__proto__隐式原型上查,即它的构造函数的prototype,如果还没有到就会再在构造函数的prototype的__proto__中查,这样⼀层⼀层向上查就会形成⼀个链式结构,我们称为原型链。
1<script>
2function Person(name,age){
3this.name = name ;
4this.age = age ;
5        }
6var per = new Person('张三',19) ;
7        console.log(per.name + per.age) ;
8</script>
  在person中查name和age属性时,看per本⾝是否有该属性,如果有就输出该值,如果没有就在per.__proto__中查,即Object.prototype中查,如果查到就返回该值,如果没有查到就到Object.prototype.__proto__中查,如果没有返回
undefined(Object.prototype.__proto__===null)。