js中强制类型转换和隐式类型转换
1、分别说明 split slice splice join 方法的作用和参数,并举例
slice(start,[end])方法是对数组进行部分截取,该方法返回一个新数组,参数start是截取的开始数组索引,end参数是要截取的最后一个索引,但是不包括最后一个。包含了原函数从start到 end 所指定的元素,但是不包括end元素。
1 <script>
2 var 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的个数
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>
2 var 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>
2 var 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>
2 var a = [1,2,3,4];
3 console.log(a.join()) ;
4 </script>
2、举例说明强制类型转换和隐式类型转换
1、强制类型转换 通过 String()、Number()、Boolean()、parseInt() 、 parseFloat() 进行强制类型转换
1 <script>
2 var str = '123' ;
3 var num = 123 ;
4 var a = 1.2 ;
5 var 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>
2 var arr = [1,2,34,5,] ;
3 console.log(arr instanceof Array) ; // true
4 console.log(arr.constructor === Array) ; // true
5 console.log(Array.isArray(arr)) ; // true
6 </script>
4、什么是原型对象?
在javascript中,每当定义一个对象时,对象中都会包含一些预定义的属性prototype,这个属性指向函数的原型对象。
每个对象都有__proto__属性,但只有函数对象才有prototype属性
在默认情况下,所有的原型对象都会自动获得一个constructor属性,这个属性指向prototype属性所在的函数
Person.prototype.constructor == Person
per.constructor == Person
函数的原型对象是构造函数的一个实例 (per == Person.prototype)。
5、什么是原型链?
1、当访问一个对象的某个属性时,会先在这个对象本身属性上查找,如果没有找到,则会去它的__proto__隐式原型上查找,即它的构造函数的prototype,如果还没有找到就会再在构造函数的prototype的__proto__中查找,这样一层一层向上查找就会形成一个链式结构,我们称为原型链。
1 <script>
2 function Person(name,age){
3 this.name = name ;
4 this.age = age ;
5 }
6 var 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)。

浙公网安备 33010602011771号