• 学习笔记


    、数据类型的检测

    /*检测是否为数组*/
    function isArray(){
    return Object.prototype.toString.call(value) == "[object Array]";
    }
    /*检测是否为函数*/
    function isFunction(value){
    return Object.prototype.toString.call(value) == "[object Function]";
    }
    /*检测是否为正则*/
    function isRegExp(value){
    return Object.prototype.toString.call(value) == "[object RegExp]";
    }
    /*检测是否为空对象*/
    function isNull(value){
    return Object.prototype.toString.call(value) == "[object Null]"
    }

    注意:这些方法都是能够使用在源生构造函数,比如在ie中,如果函数是以com对象形式实现的任何函数都不能够检测

    2、数组的检测方式:

     

     3、每一个对象(数组,对象)都存在toString()、toLocaleString()、valueOf()方法,数组如果调用toString()方法,会转化成以逗号隔开的字符串。

    几乎每一个数组都存在toString()方法,比如数字调用toString()方法,并传入参数(数值),可以转化成2进制、8进制、10进制,如:32.toString(2)

    数组的反转:arr.reverse(),和数组的排序:arr.sort(),其中sort可以接受一个函数参数,此函数接收两个参数,如果第一个参数小于第二个参数,返回一个负数;如果第一个参数

    大于第二个参数,返回一个正数;如果第一个参数和第二个参数相等,那么返回0;如下:

    function compare(value1,value2){

      if(value1<value2){

        return -1;

    }else if(value1>value2){

        return 1;

    }else{

      return 0;

    }

    }

    4、数组的增删改:

    注意:slice可以使用负值索引,和substring()、substr()做对比

    数组的indexOf()和lastIndexOf()方法

    5、数组的迭代:

    注意:数组的这5个方法,只能支持到ie9+,不能支持ie8

    reduce()和reduceRight()方法类似,主要取决于数组从哪一边开始遍历

     6、日期Date

    es5添加了Date.now(),此方式简化了使用Date对象分析代码的工作,只能支持到ie9+,针对不支持此方法的浏览器,可以使用: +new Date(),前边放一个+号,可以达到同样的目的

    7、每个函数都具有两个非继承来的方法:call()和apply()

    每个方法都可以Fn.call(this),谁call的方法,那么this对应的参数机会直接传递给吊起的方法。和bind原理基本类似。

    8、基本数据类型中的Number类型、String类型

    ①方法:toFixed()将数字转化为几位小数的数字,接收参数为数字(大于0),意思是保留几位小数;toExponential()将数字转化为指数形式,接收参数为数字(大于0),意思是指数保留小数位数;toPrecision()接收参数为数字(大于0)

    ,此方法也是可以把数字转化为,指数形式,不过当数字比较小的时候返回数字形式,如果数字比较大时返回指数形式。

    ②字符窜的操作方法:

    charAt()接收参数为数字,返回字符串;

    charCodeAt()接收参数为数字,返回unicode编码;

    concat()接收参数为字符串,比如str1.concat(str2),链接字符串1和字符串2;注意:在数组中也存在这个方法,可以打乱数组,进行组合成为新数组;

    substring()、substr()、slice(),其中slice和substr可以接收负值,substring则不可以接收负值;

    trim()方法,去字符串前后空格,str.trim();

    toLowerCase()、toLocaleLowerCase()、toUpperCase()、toLocaleUpperCase();

     9、字符串的正则表达应用:

    第一个方法:match(),str.match(patten),和patten.exec(str)是类似的,其中match方法返回的结果为:一个数组:第一个0位置是找到的字符串,第二个1位置是返回字符串的位置索引,第三个2位置是整个字符串

    如果找到了返回数组,找不到则返回null

    第二个方法:search(),和match()接收参数一样,找不到返回-1,找到了则返回索引位置,且每次都是从开始位置查找

    第三个方法:replace(),接收两个参数(str.replace(patten,substr)),返回新字符串

     

    注意:replace的第二个参数也可以传入一个函数,函数返回相应的字符串。

    第四个方法:split(),接收参数为字符串,str.split(),以什么隔断,返回数组。

    第五个方法:localeCompare(),str.localeCompare( str ),此方法

    第六个方法:String.fromCharCode(),接收参数为Unicode编码,返回字符串

    10、Math对象:

    ①Math.min(2,43,54,6,4,42,32,3)返回数值中的最小值

    ②Math.max(2,23,43,54,54,5,65,656,5),返回数值中的最大值

    ③Math.ceil(),向上舍入

    ④Math.floor(),向下舍入

    ⑤Math.round(),标准舍入

    ⑥Math.random(),生成随机数

     11、对象Object

    原型链----------------------------------

    ①判断对象2是否是对象1的原型的子对象:person1.prototype.isPrototypeOf( person2 )

    ②判断一个属性属于对象还是属于对象的原型:person.hasOwnProperty("name"),如果有返回true,如果没有返回false

    ③为了安全起见,判断属性存在于原型中还是对象中,需要同时:person.hasOwnProperty("name")&&name in person

    ④es5新增加的Object.keys(),接收一个对象,返回该对象中所有可遍历的属性,属性以数组形式返回;如果获取对象中的所有属性,可以使用Object.getOwnPropertyNames(),同样接收一个对象参数,支持到ie9+

    12、使用构造函数和原型模式

    这种构造函数于原型混成的模式,是目前在ecmascript中使用最广泛、认同度最高的一种创建自定义类型的方法,可以说,这是用来定义引用类型的默认模式。

     13、使用动态原型模式

    这种方式只有在初始化对象时才想原型中加入sayName方法。

    14、迭代器

    针对数组的迭代

     

    普通对象不可以迭代,如下:

     以上对象内返回一个next函数,比较麻烦,有了生成器,就比较幸运了

    这样生成器,相对来说就会好一些

  • 相关阅读:
    ASP.NET MVC框架(第四部分): 处理表单编辑和提交场景 【转】
    ASP.NET MVC框架 (第二部分): URL路径选择 【转】
    ASP.NET MVC框架(第三部分): 把ViewData从控制器传到视图 【转】
    SNS介绍
    测试代码在实际类的内部写还是外部写的思考
    敏捷开发:软件与文档
    TDD是开发方法还是开发方法学?
    命名空间元素的封装性
    个人感觉
    呜呜....可惜...呜呜,也谈谈测试驱动开发
  • 原文地址:https://www.cnblogs.com/zhangycun/p/7646811.html
Copyright © 2020-2023  润新知