zoukankan      html  css  js  c++  java
  • Day7

      Day7


    1-分别说明 split slice splice join 方法的作用和参数,并举例

    2-举例说明强制类型转换和隐式类型转换?

    3-判断一个变量是否是数组的方法?(2-3 种)

    4-什么是原型对象?

    5-什么是原型链?

    1-分别说明 split slice splice join 方法的作用和参数,并举例

      1>slice(数组)
    用法:array.slice(start,end)
    解释:截取数组中的某段,并返回一个新的数组;
    参数start:开始截取的索引 (取的到 =),
    参数end: 结束的索引(取不到 < end)(可选)
    //如果不传入参数二,那么将从参数一的索引位置开始截取,一直到数组尾
       例子
    var a=[1,2,3,4,5,6];
    var b=a.slice(0,3); //[1,2,3]
    var c=a.slice(3); //[4,5,6]

    //如果两个参数中的任何一个是负数,array.length会和它们相加,试图让它们成为非负数,举例说明:
    //当只传入一个参数,且是负数时,length会与参数相加,然后再截取
    var a=[1,2,3,4,5,6];
    var b=a.slice(-1); //[6]

    //当只传入一个参数,是负数时,并且参数的绝对值大于数组length时,会截取整个数组
    var a=[1,2,3,4,5,6];
    var b=a.slice(-6); //[1,2,3,4,5,6]
    var c=a.slice(-8); //[1,2,3,4,5,6]

    //当传入两个参数一正一负时,length也会先于负数相加后,再截取
    var a=[1,2,3,4,5,6];
    var b=a.slice(2,-3); //[3]

    //当传入一个参数,大于length时,将返回一个空数组
    var a=[1,2,3,4,5,6];
    var b=a.slice(6);  //[]

      2>slice(字符串)
    用法:string.slice(start,end)
    解释:slice方法复制string的一部分来构造一个新的字符串,用法与参数和数组的slice方法一样

    //举个简单的例子
    var a="i am a boy";
    var b=a.slice(0,6); //"i am a"

      3>splice(数组)
    用法:array.splice(start,deleteCount,item,...,itemx)
    解释:splice方法从array中移除一个或多个元素,并用新的item替换它们。参数start是从数组array中移除元素的开始位置。参数deleteCount是要移除的元素的个数。
    如果有额外的参数,那么item会插入到被移除元素的位置上。它返回一个包含被移除元素的数组。
     
    //举一个简单的例子
    var a=['a','b','c'];
    var b=a.splice(1,1,'e','f'); //a=['a','e','f','c'],b=['b']
    此外splice与delete两者的区别,上篇文章有解释过。
    js删除数组中的元素delete和splice的区别

    separator 翻译:分隔器

      4>split(字符串)
    用法:string.split(separator,limit) 解码 字符串转数组
    解释:split方法把这个string分割成片段来创建一个字符串数组。可选参数limit可以限制被分割的片段数量。separator参数可以是一个字符串或一个正则表达式。如果
    separator是一个空字符,会返回一个单字符的数组。

    //再举一个简单的例子
    var a="0123456";
    var b=a.split("",3); //b=["0","1","2"]



      5>arr.join(separator) 编码 数组转字符串
    解释:把数组中的元素按照参数中的字符串连接成一个字符串。

    //举一个简单的例子
    var arr = [2, 3, 4, 7];
    console.log(arr.join('-'));//2-3-4-7




     
     
     
    2-举例说明强制类型转换和隐式类型转换?
      强制类型转换

    字符转数值:
    parseInt():从左向右依次转换,能转则转,不能转停止;如果第一位就不能转,直接NaN;不识别小数点。
    parseFloat():等同于parseInt,同时可以识别小数点
    Math.round():严格转换,不允许出现任何非数字的字符,否则NaN;取最接近的整数
    Number():严格转换,不允许出现任何非数字的字符,否则NaN;直接转换
    -、*、/:利用数学运算符的隐式转换,把数值转换成字符

    数值转字符:
    toString():直接将数值转换成字符
    toFixed():直接转换,参数为保留的小数位数
    +:利用数学运算符的隐式转换,+连接一个空字符

    其他类型的转换:
    用+、-、*、/ 对true、false、null进行转换可得,true为1,false为0,null为0

     
     
      隐式类型转换
    JavaScript的数据类型分为六种,分别为null,undefined,boolean,string,number,object  
    typeof方法打印来某个是属于哪个类型的。不同类型的变量比较要先转类型,叫做类型转换,
    类型转换也叫隐式转换。隐式转换通常发生在运算符加减乘除,等于,还有小于,大于等等

    场景——数学运算符:+ - * /
    规则:
    +:当任意一边出现字符时,“+”会把数值类型转换成字符类型,此时 + 代表拼接 //"1"+1=11;
    -、*、/:出现纯数字字符时,会转换成数值类型处理,出现非数字类型时,会出现“NaN //1-"1"=0;

    场景——关系运算符:> < >= <= != == ===
    规则:
    当只有一边为纯数字字符时,会转换成数值比较 //22<"44" 会转化为 22<44; true
    当两边全部是数字字符时,会按照字符串对比的规则对比(逐位比较,得到结果,停止比较) //"2">"12" true
    ==:若有字符类型会转换成数值类型,比较的是值 //1=="1"; true
    ===:若有字符类型不会转换,比较的是值和数据类型,全等 //1==="1"; false

    场景——if语句:
    规则:
    0、“”、null、undefined、NaN在if的()内会转换为false

    代码填充

    3-判断一个变量是否是数组的方法?(2-3 种)

    1. typeof真的那么厉害吗??

    //首先看代码
    
    var ary = [1,23,4];
    
    console.log(typeof ary); //输出结果是Object
    

    上面的办法并不能实时的检测出是否是数组,只能判断其类型,所以说typeof判断基本类型数据还是挺好的,但是不能准确测试出是否是数组(typeof的具体用法以后提及,现在回归正题)

    2.instanceof 判断

    var ary = [1,23,4];
    
    console.log(ary  instanceof Array) //true; 
    

    从输出的效果来看,还是挺令人满意的,能准确的检测出数据类型是否是数组,不要高兴的太早,大家先想想这个的缺点,我们接着说第三种方法

    3.原型链方法

    var ary = [1,23,4]; 
    
    console.log(ary.__proto__.constructor==Array); //true 
    
    console.log(ary.constructor==Array) //true 这两段代码是一样的 

    总结一下第2种方法和第3种方法局限性

    instanceof 和constructor 判断的变量,必须在当前页面声明的,比如,一个页面(父页面)有一个框架,框架中引用了一个页面(子页面),在子页面中声明了一个ary,并将其赋值给父页面的一个变量,这时判断该变量,Array == object.constructor;会返回false;

    原因:

    1、array属于引用型数据,在传递过程中,仅仅是引用地址的传递。

    2、每个页面的Array原生对象所引用的地址是不一样的,在子页面声明的array,所对应的构造函数,是子页面的Array对象;父页面来进行判断,使用的Array并不等于子页面的Array;切记,不然很难跟踪问题!

    4.通用的方法

    
    var ary = [1,23,4];
    
    function isArray(o){
    
    return Object.prototype.toString.call(o)== '[object Array]';
    
    }
    
    console.log(isArray(ary));
     
     
     
    4-什么是原型对象?

    函数的原型对象

      ​ 在JavaScript中,我们创建一个函数A(就是声明一个函数), 那么浏览器就会在内存中创建一个对象B,而且每个函数都默认会有一个属性 prototype 指向了这个对象( 即:prototype的属性的值是这个对象 )。这个对象B就是函数A的原型对象,简称函数的原型。这个原型对象B 默认会有一个属性 constructor 指向了这个函数A ( 意思就是说:constructor属性的值是函数A )
     
     
     
    原型是Javascript中的继承的基础,JavaScript的继承就是基于原型的继承。
     
     
     
     
     
    5-什么是原型链?
    MDN:
     
    JavaScript 常被描述为一种基于原型的语言 (prototype-based language)——每个对象拥有一个原型对象,对象以其原型为模板、从原型继承方法和属性。原型对象也可能拥有原型,并从中继承方法和属性,一层一层、以此类推。这种关系常被称为原型链 (prototype chain),它解释了为何一个对象会拥有定义在其他对象中的属性和方法。
     
    准确地说,这些属性和方法定义在Object的构造器函数(constructor functions)之上的prototype属性上,而非对象实例本身。
  • 相关阅读:
    关于JDK 安装,以及Java环境的设置
    DHCP snooping
    解除破解正版Kindle电子书籍的版权限制
    广东地区电信官方DNS服务器
    Bash脚本15分钟进阶指导
    视听说英语
    华中师大2013新生群
    【强网杯2018】Gamebox
    【强网杯2018】逆向hide
    【Wechall.net挑战】Anderson Application Auditing
  • 原文地址:https://www.cnblogs.com/wy252/p/14354376.html
Copyright © 2011-2022 走看看