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>
 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)。

posted @ 2021-02-04 16:05  gaobz  阅读(579)  评论(0)    收藏  举报