zoukankan      html  css  js  c++  java
  • JavaScript高级程序设计读书笔记(2)

    1.变量、作用域和内存问题

    1.1引用变量动态添加属性

            <script type="text/javascript">
                var p=new Object();
                p.age=12;
                alert(p.age);
            </script>


    1.2传递参数

    JavaScript中参数都是按照值传递的

            <script type="text/javascript">
                function swap(x,y){
                    var temp=x;
                    x=y;
                    y=temp;
                }    
                var a=10,b=20;
                swap(a,b);
                alert(a+"..."+b);//10...20    
            </script>


    对象中的值传递

            <script type="text/javascript">
                function change(obj){
                    obj.name="zhangsan";
                    obj =new Object();
                    obj.name="lisi";
                }    
                var person =new Object();
                person.name="hello";
                change(person);
                alert(person.name);//zhangsan
            </script>

    函数内部重写obj时,这个变量引用的就是一个局部对象了,这个局部对象会在函数执行完毕后销毁。

    1.3检测类型

    对于引用类型,typeof只能检测是否是对象。因此,JavaScript提供了instanceof操作符。

    2.引用数据类型

    2.1创建引用对象的实例

    创建引用对象的实例与两种方式

    方式1

            <script type="text/javascript">
                var person=new Object();
                person.name="zhangsan";
                person.age=21;
            </script>

    var person={}等价于var person=new Object() 

    方式2

            <script type="text/javascript">
                var person={
                    name:"zhangsan",
                    age:21
                }            
            </script>


    JavaScript可以使用方括号访问属性

    alert(person["name"]);

    3.Array类型
    栈方法

            <script type="text/javascript">
                var colors =new Array();
                var count =colors.push("red","green");
                alert(count);//2
                count =colors.push("black");
                alert(count);//3
                var item=colors.pop();
                alert(item);//black
                alert(colors.length);//2
            </script>

    队列方法

            <script type="text/javascript">
                var colors =new Array();
                var count =colors.push("red","green");
                alert(count);//2
                count =colors.push("black");
                alert(count);//3
                var item=colors.shift();
                alert(item);//red
                alert(colors.length);//2
            </script>


    2

            <script type="text/javascript">
                var colors =new Array();
                var count =colors.unshift("red","green");
                alert(count);//2
                count =colors.unshift("black");
                alert(count);//3
                var item=colors.pop();
                alert(item);//green
                alert(colors.length);//2
            </script>

    concat()方法

            <script type="text/javascript">
                var colors =["red","green","blue"];
                var colors2=colors.concat("yellow",["white","black"]);
                alert(colors);//red,green,blue
                alert(colors2);//red,green,blue,yellow,white,black
            </script>

    slice()截取数组  包含头不包含尾

    splice()方法:起始位置,0,要插入的项。如果要插入多个项,可以传入第四、第五个参数。

    删除:指定2个参数:要删除的第一项的位置和要删除的项数。

    插入:提供3个参数,

    替换:向指定位置插入任意数量的项,且同时删除任意数量的想。指定3个参数:起始位置、要删除的项数和要插入的任意数量的项。

            <script type="text/javascript">
                var colors =["red","green","blue"];
                var colors2=colors.concat("yellow",["white","black"]);
                alert(colors);//red,green,blue
                alert(colors2);//red,green,blue,yellow,white,black
                alert(colors2.splice(0,1));//red
                colors2.splice(0,0,"pink")
                alert(colors2);//pink,green,blue,yellow,white,black
                colors2.splice(2,1,"orange");
                alert(colors2);//pink,green,orange,yellow,white,black
            </script>

    4. Date类型

    创建一个Date对象

            <script type="text/javascript">
                var now = new Date();
                alert(now);//Sat Aug 25 2012 10:59:49 GMT+0800
            </script>

    简化时间参数方法Date.parse()和Date.UTC

    5.Regex类型

    基本语法

    var expression=/parttern/flags

    6.Function类型

    匿名方法

            <script type="text/javascript">
                var sum =function(a,b){
                    return a+b;
                }
                alert(sum(3,4));//7
                    
            </script>

    通过Function创建函数

    var sum =new Function ("a","b","return a+b");

    函数声明与函数表达式:解析器率先读取函数声明,并使其在执行任何代码之前可用,至于函数表达式,则必须等到解析器执行到它所在的代码航,才会真正被解释执行。

            <script type="text/javascript">
                alert(add(3,4));
                function add(a, b){
                return a+b;//7
                }
                            
            </script>


    下面代码将报错

            <script type="text/javascript">
                alert(add(3,4));
                var add=function(a, b){
                return a+b;
                }            
            </script>


    将函数作为值

            <script type="text/javascript">
                function add(x, y){
                return x+y;
                }    
                function callFunction(a,b,c,d){
                    return a(b,c)+d;
                }
                var number=callFunction(add,3,5,5);
                alert(number);
            </script>

    输出结果:13
    函数内部的两个对象:arguments和this

    arguments对象有一个名叫做callee的属性,该属性是一个指针,指向拥有一个arguments对想的函数。

    函数属性:length和prototype

    函数内的方法apply()和call()。这两个方法的用途都是在特地那个的作用域调用函数。apply()方法接受两个参数:一个是在其中运行函数的作用域,另一个是参数数组。其中,第二个参数可以是Array的实例,也可以是arguments对象。

            <script type="text/javascript">
                function add(x, y){
                return x+y;
                }    
                function callFunction(a,b,c,d){
                    return add.apply(this,arguments)+c+d;
                }
                var number=callFunction(3,3,5,5);
                alert(number);//16
            </script>


    call()方法与apply()方法的作用相同,她们的区别仅在于接受参数的方式不同。使用call()方法时,传递给函数的参数必须逐个列举出来。

            <script type="text/javascript">
                function add(x, y){
                return x+y;
                }    
                function callFunction(a,b,c,d){
                    return add.call(this,a,b)+c+d;
                }
                var number=callFunction(3,3,5,5);
                alert(number);//16
            </script>

    7.基本包装类

    JavaScript提供了三个包装类Boolean String 和Number

    String类常用方法:charAt() charCodeAt()获取编码  [] 利用脚标访问字符

            <script type="text/javascript">
                var str="abcdefg";
                alert(str.charAt(1));//b
                alert(str.charCodeAt(1));//98
                alert(str[1]);//b
            </script>

    concat()将一个或多个字符串连接在一起

            <script type="text/javascript">
                var str="abcdefg";
                alert(str.concat("hijk"));//abcdefghijk
            </script>

    截取字符串 slice() substring substr()

            <script type="text/javascript">
                var str="abcdefg";
                alert(str.slice(1,3));//bc
                //substr 第二个参数是字符个数
                alert(str.substr(1,3));//bcd
                alert(str.substring(1,3));//bc
            </script>

    获取字符位置indexOf

    大小写转换toLowerCase toUpperCase

    比较localeCompare()方法

    frameCharCode()方法和charCodeAt()方法相反

    8、Math类

    ceil方法

    floor方法

    round方法

    min()和max()方法

    random方法

  • 相关阅读:
    从B树、B+树、B*树谈到R 树
    平衡二叉树、B树、B+树、B*树
    数据库事务和四种隔离级别
    python 安装surprise库解决 c++tools错误问题
    python的sorted函数
    爬虫出现gbk错误
    Windows下Python安装numpy+mkl,Scipy和statsmodels
    Flask--框架及路由
    flask常见面试题
    RE正则表达式
  • 原文地址:https://www.cnblogs.com/malinkang/p/2655883.html
Copyright © 2011-2022 走看看