• Javascript高级程序设计复习——第五章引用类型 【原创】


    5.1  Object类型

    1:创建Object实例的两种方式

    ①new构造法

    var obj1 = new Object();   注意大写!不传递参数时可以省略圆括号
    obj1.hehe = "nmb";

    ②对象字面量表示法

    var obj1 = {
         hehe : "nmb"            
    };

    在使用对象字面量语法的时候,属性名可以使用字符串(new方法会出现undefined string的提示)

    var obj1 = {
        "hehe" : "nmb"
    };
    
    var obj1 = {
        hehe : "nmb"
    };
    
    //上面两句等价,均使用obj1.hehe进行引用;若是使用obj1."hehe"引用,无论哪种方式都无法成功;

    var o ={}; 与 var o = new Object();等价 

    2:方括号表示法来访问对象的属性——特点是属性名为变量或包含空格,为关键字时才使用方括号表示法

    alert(obj["hehe"]);---方括号中的属性名需要以字符串的形式访问

    3:所有对象都具有一些基本的属性和方法

    比如:toString(),valueOf(),hasOwnProperty()..


    5.2Array类型

    1:创建数组的方式

    //new构造法
    var colors = new Array();
    
    var colors = new Array(20);
    
    var colors = new Array("red","blue");
    
    //数组字面量表示法
    var colors = ["red","blue"];
    
    var names = []; 

    2:检测数组

    Array.isArray();

    3:转换方法

    Array.toString();返回由逗号分隔开的拼接字符串

    Array.valueOf();返回的依旧是数组本身不变

    alert(Array);由于alert()要接收字符串参数,所以会在后台调用toString()方法,与toString()方法相同

    Array.join();方法可以使用不同的分隔符来构建这个字符串如:Array.join("||")-->red||blue

    4:数组对象的各种方法

    ①push();pop();(返回长度)推入后面,后入先出——栈

    ②unshift();shift();推入前面,先入先出——队列

    ③reverse();sort();——重排序

    ④concat(传递一个或多个参数);slice(传递1-2个参数,新建一个从初始位置到结束位置之前一位的数组);splice(要删除的第一项,删除的项数,填充的项)——操作方法

    ⑤indexOf(),lastIndexOf()——位置方法(传递1-2个参数,搜索目标和起始位置)

    ⑥every(),filter(),forEach(),map(),some()——迭代方法

    ⑦reduce(),reduceRight()——归并方法


    5.3 Date类型

    1:创建Date类型(不传入参数则自动获取当前日期和时间)

    var now = new Date();

    2:Date方法

    Date.parse();——接收一个表示日期的字符串参数,然后返回相应的日期毫秒数如

    var someDate = new Date(Date.parse("May 25, 2004"));
    或
    var someDate = new Date("May 25,2004");
    
    //如果无法识别则返回NAN,由于直接将字符串传递给Date会自动调用Date.parse()所以上面两式结果相同

    var someDate = new Date();
    //如果不传入参数则自动获得当前日期和时间

    Date,UTC();——只有前两个参数年月是必填的

    var someDate = new Date(Date.UTC(2005,4,5,17,55,55));

    var someDate = new Date(2005,4,5,17,55,55);
    //GMT事件2005年5月5日下午5:55:55

    上面两种方法均返回表示日期的毫秒数

    var datenow2 = Date.now();
    
    var datenow2 = +new Date();
    
    //上面均可以获得当前日期的毫秒数,通常可以用于计算

    3.继承的方法

    Date.toString()——返回带有时区信息的日期和时间

    Date.valueOf()——返回日期的毫秒表示

    由于关系运算符运算的是对象时,会自动调用对象的valuOf()后比较,所以可以方便的进行比较

    var date1 = new Date(2007,0,1);
    var date2 = new Date(2007,1,1);
    
    alert(date1<date2); 
    //true

    4:Date对象还有很多用于设置和取得日期值中特定部分的方法P102

    比如:Date.getTime();——返回表示日期的毫秒数,与ValueOf()返回值相同;


    5.4 RegExp正则


    5.5 Function类型

    1:创建函数

    ①函数声明(函数提升,但是无法直接跟圆括号调用)

    function sum(s1,s2){
    
      return s1+s2;
    
    }

    ②函数表达式

    var sum = function(s1,s2){
      
       return num1+num2;
    
    };

    【注】:不带括号的函数名是访问函数指针,而非调用函数;函数表达式有分号结尾,函数声明则没有!

    2:函数内部属性

    ①有两个特殊的对象:arguments和this

    I.arguments.callee == 该参数所属的函数名

    function sum(s1,s2){
    
    
      return arguments.callee;
    
         //此时的arguments.callee == sum
    }

    II.caller属性保存着调用当前函数的函数的引用

    function outer(){
        inner();
    }
    
    function inner(){
        alert(inner.caller);
    }
    
    outer();
    
    //此处对outer()的调用会显示outer函数的源代码

    3:函数属性和方法

    ①length属性表示希望接收的命名参数的个数;

    ②prototype属性——toString(),valueOf();

    ③每个函数都包含两个非继承而来的方法call和apply——传递参数,扩充作用域

    ④bind方法——创建一个函数实例,其this会被绑定到传给bind()函数的值

       例子如下

    window.color = "red";
    var  o = {color: "blue"};
    
    function sayColor(){
        alert(this.color);     
    }
    
    var objectSayColor = sayColor.bind(o);
    objectSayColor(); 
    //blue

     ⑤函数继承的toString(),valueOf()方法均返回函数代码


     5.6基本包装类型——Boolean/Number/String

    1:引用类型与基本包装类型的区别就是对象的生存期,自动创建的基本包装类型的对象只存在于一行代码的执行瞬间,然后立即被销毁

    var s1 = "some text";
    
    s1.color = "red";
    
    alert(s1.color);
    
    //undefined

    2:Boolean对象没什么用,建议永远不要使用。

    3:Number类型

    ①toString(x)——x表示转化成几进制的字符串形式

    ②toFixed(x)——x表示按照指定的小数位返回数值的字符串表示

    ③toExponential(x)——使用科学记数法记数,x表示输出结果中的小数位数

    4:String类型

    ①length——返回字符串字符数(包括空格)

    ②charAt(x)——返回x处的字符

    var str = "hello world";
    alert(str.charAt(1));
    //e

    ③ECMASCRIPT定义了另一个访问个别字符的方法[]

    var str = "hello world";
    alert(str[1]);
    //e

    ④concat()——类似数组的相同方法,但是返回的不是数组而是拼接后的字符串(一般情况下使用+代替

    ⑤slice(),substr(),substring()——均是对字符串进行处理后返回处理结果(互相可以替换,效果差不多)

    ⑥indexOf(),lastIndexOf()——类似数组的方法,接收两个参数,查询值和从哪里开始查询

    ⑦trim(),trimLeft(),trimRight()——删除前置后置的空格/删除前置空格/删除后置空格

    ⑧toLowerCase(),toUpperCase()——小写大写转换

    ⑨字符串的模式匹配方法——与RegXep到时候一起总结

    split(x指定分隔符,y指定返回数组大小)——模式匹配很好用的方法


    5.7 单体内置对象

    1.Global对象

    ①eval()方法

    接受一个参数,即要执行的ECMAScript字符串;

    eval("alert('hi')");

    在执行了字符串后,会将执行结果插入到原位置,与eval()处于相同的作用域链中

    var mes = "hello world";
    eval("alert(mes)");
    //hello world

    ②Web浏览器将Global这个全局对象作为window对象的一部分来实现,因此在全局作用域中声明的所有变量和函数,都成了window对象的属性

    var color = "red";
    function sayColor(){
        alert(window.color);    
    }
    window.sayColor();
    //red

    2.Math对象

    ①属性

    Math.E,Math.PI………………

    ②Math.max(1,2,3,4);Math.min(1,2,3,4);

    要取得数组中的最小值可以用apply方法

    var val = [1,2,3,4,5,6,7,8];
    var max = Math.max.apply(Math,values);  //虽然书上的方法是这里
    var max = Math.max.apply(this,values);  //但是经测试这种写法也是OK

    ③Math.ceil()——向上舍入,Math.round()——向下舍入,Math.floor()——标准舍入(四舍五入),Math.random()

  • 相关阅读:
    (转)mybatis-plus入门
    (转)mybatis数据库物理分页插件PageHelper
    (转)mybatis热加载(依赖mybatis-plus插件)的实现
    The walking dead
    JDBC编程六部曲
    MySQL时区错误导致server time zone value '&#214;&#208;&#185;&#250;&#177;&#234;&#215;&#188;&#202;&#177;&#188;&#228;' 错误
    SpringMVC-Helloworld 的归纳理解
    Helloworld——SpringMVC
    starting Tomcat v8.5 at localhost has encountered a problem
    我的第一个SpringProject——HelloWorld
  • 原文地址:https://www.cnblogs.com/cndotabestdota/p/5707459.html
Copyright © 2020-2023  润新知