• JavaScript 2


    大纲:

    练习一:全选/全不选/反选

    练习二:

    函数:Arguments对象 变量的作用域 几种特殊的函数

    闭包:作用域链 闭包 循环中的闭包

    对象:定义对象的三种方式 操作对象的属性和方法 this的用法 Array对象 String对象

    原型:原型的作用 原型属性与自身属性同名 扩展内建对象

    继承:_对象之间的继承 只继承于原型 普通对象的继承

    练习一

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <title>check.html</title>
        
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="this is my page">
        <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      </head>
      
      <body>
          您的爱好很广泛!!!
           <br>
         <input type="checkbox" name="checkItems" id="checkItems" value="全选/全不选"/>全选/全不选
         <br>
            <input type="checkbox" name="items" value="足球" />足球
            <input type="checkbox" name="items" value="篮球"/>篮球
            <input type="checkbox" name="items" value="游泳"/>游泳
            <input type="checkbox" name="items" value="唱歌"/>唱歌
            <br>
            <input type="button" name="checkall" id="checkall" value="全选" />
            <input type="button" name="checkall" id="checkallNo" value="全不选" />
            <input type="button" name="checkall" id="check_revsern" value="反选" />
      </body>
      <script language="JavaScript">
              /*
             * <input type="checkbox" name="items" value="足球" />足球
                <input type="checkbox" name="items" value="篮球"/>篮球
                <input type="checkbox" name="items" value="游泳"/>游泳
                <input type="checkbox" name="items" value="唱歌"/>唱歌
             */
            var itemsElements = document.getElementsByName("items");
            
            //<input type="button" name="checkall" id="checkall" value="全选" />
            document.getElementById("checkall").onclick = checkall;
            
            function checkall(){
                for(var i=0;i<itemsElements.length;i++){
                    var itemsElement = itemsElements[i];
                    
                    itemsElement.checked = "checked";
                }
                
            }
            
            //<input type="button" name="checkall" id="checkallNo" value="全不选" />
            document.getElementById("checkallNo").onclick = checkallNo;
            
            function checkallNo(){
                for(var i=0;i<itemsElements.length;i++){
                    var itemsElement = itemsElements[i];
                    
                    //itemsElement.removeAttribute("checked");
                    
                    //itemsElement.setAttribute("checked",null);
                    
                    itemsElement.checked = null;
                    
                    /*
                     * 编写javascript代码时:
                     *     * 不仅要语法正确,而且效果也正确
                     *     * 只看语法的正确性,最终要看效果对不对
                     */
                }
            }
            
            //<input type="button" name="checkall" id="check_revsern" value="反选" />
            document.getElementById("check_revsern").onclick = function(){
                for(var i=0;i<itemsElements.length;i++){
                    var itemsElement = itemsElements[i];
                    
                    if(itemsElement.checked){
                        itemsElement.checked = null;
                    }else{
                        itemsElement.checked = "checked";
                    }
                }
            }
            
            //<input type="checkbox" name="checkItems" id="checkItems" value="全选/全不选"/>全选/全不选
            document.getElementById("checkItems").onclick = function(){
                if(this.checked){
                    //全选
                    checkall();
                }else{
                    //全不选
                    checkallNo();
                }
            }
            
            /*
             * 编写代码时,总是想一次性将代码做到最优:
             *     * 即使是三行代码,多日后,也是需要维护的
             *     * 代码实现上:
             *         * 完成功能,目标
             *         * 做优化
             */
                
      </script>
    </html>

    练习二:

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    
    <style type="text/css">
    <!--
    BODY
    {
        font-family:"Courier";
        font-size: 12px;
        margin:0px 0px 0px 0px;
        overflow-x:no;
        overflow-y:no;
        background-color: #B8D3F4;
    }
    td
    {
        font-size:12px;
    }
    .default_input
    {
        border:1px solid #666666;
        height:18px;
        font-size:12px;
    }
    .default_input2
    {
        border:1px solid #666666;
        height:18px;
        font-size:12px;
    }
    .nowrite_input
    {
        border:1px solid #849EB5;
        height:18px;
        font-size:12px;
        background-color:#EBEAE7;
        color: #9E9A9E;
    }
    .default_list
    {
        font-size:12px;
      border:1px solid #849EB5;
    }
    .default_textarea
    {
        font-size:12px;
        border:1px solid #849EB5;
    }
    
    .nowrite_textarea
    {
        border:1px solid #849EB5;
        font-size:12px;
        background-color:#EBEAE7;
        color: #9E9A9E;
    }
    
    .wordtd5 {
        font-size: 12px;
        text-align: center;
        vertical-align:top;
        padding-top: 6px;
        padding-right: 5px;
        padding-bottom: 3px;
        padding-left: 5px;
        background-color: #b8c4f4;
    }
    
    .wordtd {
        font-size: 12px;
        text-align: left;
        vertical-align:top;
        padding-top: 6px;
        padding-right: 5px;
        padding-bottom: 3px;
        padding-left: 5px;
        background-color: #b8c4f4;
    }
    .wordtd_1 {
        font-size: 12px;
        vertical-align:top;
        padding-top: 6px;
        padding-right: 5px;
        padding-bottom: 3px;
        padding-left: 5px;
        background-color: #516CD6;
        color:#fff;
    }
    .wordtd_2{
        font-size: 12px;
        text-align: right;
        vertical-align:top;
        padding-top: 6px;
        padding-right: 5px;
        padding-bottom: 3px;
        padding-left: 5px;
        background-color: #64BDF9;
    }
    .wordtd_3{
        font-size: 12px;
        text-align: right;
        vertical-align:top;
        padding-top: 6px;
        padding-right: 5px;
        padding-bottom: 3px;
        padding-left: 5px;
        background-color: #F1DD34;
    }
    .inputtd
    {
        font-size:12px;
        vertical-align:top;
        padding-top: 3px;
        padding-right: 3px;
        padding-bottom: 3px;
        padding-left: 3px;
    }
    .inputtd2
    {
        text-align: center;
        font-size:12px;
        vertical-align:top;
        padding-top: 3px;
        padding-right: 3px;
        padding-bottom: 3px;
        padding-left: 3px;
    }
    .tablebg
    {
        font-size:12px;
    }
    
    .tb{
        border-collapse: collapse;
        border: 1px outset #999999;
        background-color: #FFFFFF;
    }
    .td2{line-height:22px; text-align:center; background-color:#F6F6F6;}
    .td3{background-color:#B8D3F4; text-align:center; line-height:20px;}
    .td4{background-color:#F6F6F6;line-height:20px;}
    .td5{border:#000000 solid;
           border-right-width:0px;
           border-left-width:0px;
           border-top-width:0px;
           border-bottom-width:1px;}
    
    .tb td{
    font-size: 12px;
    border: 2px groove #ffffff;
    }
    
    
    
    
    .noborder {
        border: none;
    }
    
    .button {
        border: 1px ridge #ffffff;
        line-height:18px;
        height: 20px;
        width: 45px;
        padding-top: 0px;
        background:#CBDAF7;
        color:#000000;
        font-size: 9pt;
        font-family:"Courier";
    } 
    
    .textarea {
        font-family: Arial, Helvetica, sans-serif, "??";
        font-size: 9pt;
        color: #000000;
        border-bottom-width: 1px;
        border-top-style: none;
        border-right-style: none;
        border-bottom-style: solid;
        border-left-style: none;
        border-bottom-color: #000000;
        background-color:transparent;
        text-align: left
    }
    -->
    </style></head>
    
    <body>
    
    <div style="border:1px dashed #E6E6E6;margin:150px 0px 0px 450px; 350px; height:200px; background-color:#E6E6E6;">
    <table width="285" height="169" border="0" align="left" cellpadding="0" cellspacing="0" style="margin:15px 0px 0px 15px;">
      <tr>
        <td width="126">
            <!--multiple="multiple" 能同时选择多个   size="10"  确定下拉选的长度-->
            <select name="first" multiple="multiple" size="10" class="td3" id="first">
              <option value="选项1">选项1</option>
              <option value="选项2">选项2</option>
              <option value="选项3">选项3</option>
              <option value="选项4">选项4</option>
              <option value="选项5">选项5</option>
              <option value="选项6">选项6</option>
              <option value="选项7">选项7</option>
              <option value="选项8">选项8</option>
            </select>    
        </td>
        <td width="69" valign="middle">
           <input name="add"  id="add" type="button" class="button" value="-->" /> 
           <input name="add_all" id="add_all"  type="button" class="button" value="==>" /> 
           <input name="remove"  id="remove" type="button" class="button" value="&lt;--" />
           <input name="remove_all"  id="remove_all" type="button" class="button" value="&lt;==" />
            </td>
        <td width="127" align="left">
          <select name="second" size="10" multiple="multiple" class="td3" id="second">
             <option value="选项9">选项9</option>
          </select>
        </td>
      </tr>
    </table>
    </div>
    </body>
    <script type="text/javascript">
           //<input name="add"  id="add" type="button" class="button" value="-->" /> 
           document.getElementById("add").onclick = add;
           
           function add(){
                   /*
                    * 将左边被选中的选项,移到右边去
                    *     * 选中一个时
                    *     * 选中多个时
                    */
                var firstElement = document.getElementById("first");
                var options = firstElement.getElementsByTagName("option");
                
                var secondElement = document.getElementById("second");
                
    //            for(var i=0;i<options.length;i++){
    //                if(options[i].selected){
    //                    secondElement.appendChild(options[i]);
    //                    i--;
    //                }
    //            }
                
                var len = options.length;
                
                for(var i=0;i<len;i++){
                    /*
                     * select标签的selectedIndex属性
                     *     * 当没有选中任何一个选项时,selectedIndex属性值是"-1"
                     *     * 当选中一个选项的时候,selectedIndex属性值是被选中的选项的索引值
                     *     * 当选中多个选项的时候,selectedIndex属性值是第一个被选中的选项的索引值
                     */
                    //alert(firstElement.selectedIndex);
                    if(firstElement.selectedIndex!=-1){
                        secondElement.appendChild(options[firstElement.selectedIndex]);
                    }
                }
           }
           
           //<input name="add_all" id="add_all"  type="button" class="button" value="==>" /> 
           document.getElementById("add_all").onclick = function(){
                   var firstElement = document.getElementById("first");
                var options = firstElement.getElementsByTagName("option");
                var len = options.length;
                var secondElement = document.getElementById("second");
                for(var i=0;i<len;i++){
                    secondElement.appendChild(options[0]);
                }
                
           }
           
           //<input name="remove"  id="remove" type="button" class="button" value="&lt;--" />
           document.getElementById("remove").onclick = remove;
           
           function remove(){
                   var secondElement = document.getElementById("second");
                var options = secondElement.getElementsByTagName("option");
                var len = options.length;
                var firstElement = document.getElementById("first");
                for(var i=0;i<len;i++){
                    if(secondElement.selectedIndex!=-1){
                        firstElement.appendChild(options[secondElement.selectedIndex]);
                    }
                }
           }
           
           //<input name="remove_all"  id="remove_all" type="button" class="button" value="&lt;==" />
           document.getElementById("remove_all").onclick = function(){
                   var secondElement = document.getElementById("second");
                var options = secondElement.getElementsByTagName("option");
                var len = options.length;
                var firstElement = document.getElementById("first");
                for(var i=0;i<len;i++){
                    firstElement.appendChild(options[0]);
                }
           }
           
           //双击事件
           document.getElementById("first").ondblclick = add;
           
           document.getElementById("second").ondblclick = remove;
    
    </script>
    </html>

    函数:

    <!DOCTYPE html>
    <html>
      <head>
        <title>01_Arguments 对象.html</title>
        
        <meta name="keywords" content="keyword1,keyword2,keyword3">
        <meta name="description" content="this is my page">
        <meta name="content-type" content="text/html; charset=UTF-8">
        
        <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
    
      </head>
      
      <body>
        This is my HTML page. <br>
      </body>
      <script type="text/javascript">
                          /*
                           * * java中的函数,重载
                           *         * 节省了命名空间
                           *         * 执行效率高
                           * * javascript中的函数有没有重载?没有
                           *         * 当定义多个同名的函数时,最后一个函数会覆盖前面所有的函数
                           *         * 当多个函数同名时,最后一个定义的函数起作用
                           */
    //                    function add(a,b){
    //                        return a+b;
    //                    }
    //                    
    //                    function add(a,b,c){
    //                        return a+b+c;
    //                    }
    //                    
    //                    alert(add(1,2));        //output    NaN
    //                    alert(add(1,2,3));        //output    6
                        
                        //想办法:在javascript中,实现函数重载的效果
                        /*
                         * arguments对象:
                         *     * arguments对象是数组对象
                         *     * arguments对象的length属性,获取到的是参数的个数
                         */
    //                    function fn(){
    //                        alert(arguments.length);
    //                    }
    //                    
    //                    fn();                    //output    0
    //                    fn("a");                //output    1
    //                    fn("a","b");            //output    2
    //                    fn("a","b","c");        //output    3
                        
                        function add(){
                            if(arguments.length==2){
                                return arguments[0] + arguments[1];
                            }else if(arguments.length==3){
                                return arguments[0] + arguments[1] + arguments[2];
                            }
                        }
                        
                        alert(add(1,2));            //output    3
                        alert(add(1,2,3));            //output    6
                        
      </script>
    </html>
    <!DOCTYPE html>
    <html>
      <head>
        <title>02_变量的作用域.html</title>
        
        <meta name="keywords" content="keyword1,keyword2,keyword3">
        <meta name="description" content="this is my page">
        <meta name="content-type" content="text/html; charset=UTF-8">
        
        <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
    
      </head>
      
      <body>
        This is my HTML page. <br>
      </body>
      <script type="text/javascript">
                          /*
                           * * 变量a是全局变量,环境中任意位置都可以访问
                           * * 变量b是局部变量,只能在函数fn()中访问
                           * * 在javascript中,只存在全局变量和局部变量
                           * * 在javascript中,只存在全局域和函数域
                           */
    //                    var a = "a";
    //                    
    //                    function fn(){
    //                        var b = "b";
    //                        
    //                        alert(a);        //output    a
    //                        
    //                        alert(b);        //output    b
    //                    }
    //                    
    //                    fn();
    //                    alert(a);            //output    a
    //                    alert(b);            //output    undefind
                        
                        /*
                         * 在javascript中,不使用修饰符"var"时:
                         *     * 环境会自动将变量的定义为全局变量
                         *     * 并不报错
                         */
    //                    var a = "a";
    //                    
    //                    function fn(){
    //                        b = "b";
    //                        
    //                        alert(a);        //output    a
    //                        
    //                        alert(b);        //output    b
    //                    }
    //                    
    //                    fn();
    //                    alert(a);            //output    a
    //                    alert(b);            //output    b
                        
                        /*
                         * 全局变量与局部变量同名时:
                         * * 定义了全局变量a,并初始化为"a"
                         * * 定义了函数fn(),有没有执行函数中的代码?没有
                         *         * 局部变量a,有没有被定义?被定义,但是没有初始化
                         * * 调用函数fn()时
                         *         * 第一个打印结果,打印的是局部变量a。但是因为局部变量a没有初始化,所以是undefind
                         *         * 第二个打印结果,打印的是局部变量a。局部变量a初始化了,所以是b
                         */
                        var a = "a";
                        
                        function fn(){
                            
                            alert(a);        //output    undefind
                            
                            var a = "b";
                            
                            alert(a);        //output    b
                        }
                        
                        fn();
                        alert(a);            //output    a
                        
      </script>
    </html>
    <!DOCTYPE html>
    <html>
      <head>
        <title>03_几种特殊的函数.html</title>
        
        <meta name="keywords" content="keyword1,keyword2,keyword3">
        <meta name="description" content="this is my page">
        <meta name="content-type" content="text/html; charset=UTF-8">
        
        <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
    
      </head>
      
      <body>
        This is my HTML page. <br>
      </body>
      <script type="text/javascript">
    //                      function add(a,b){
    //                        return a+b;
    //                    }
                        
                        /*
                         * 1 匿名函数:没有名的函数
                         *     作用:
                         *         * 可以将匿名函数作为参数传递给其他函数。这样,接收方函数就能利用所传递的函数来完成某些事情。
                         *         * 可以定义某个匿名函数来执行某些一次性任务
                         */
    //                    function(){}
                        
                        /*
                         * one和two函数,叫做回调函数
                         * 回调函数:将函数作为参数传递给其他函数,作为参数的函数就是回调函数
                         */
                        function fn(a,b){
                            return a() + b();
                        }
                        
    //                    var one = function(){return 1;}
    //                    var two = function(){return 2;}
                        
    //                    alert(fn(one,two));            //output    3
                        
                        //以上代码可以改写:匿名回调函数
    //                    alert(fn(function(){return 1;},function(){return 2;}));        //output    3
                        
                        //定义即调用函数
    //                    function fn(){
    //                        alert("javascript");
    //                    }
    //                    fn();
                        
                        /*
                         * 自调函数:执行一次性任务
                         *     * 第一个小括号:封装函数体
                         *     * 第二个小括号:调用封装的函数
                         */
    //                    (
    //                        function(){
    //                            alert("javascript");
    //                        }
    //                    )();
                        
    //                    (
    //                        function(str){
    //                            alert(str+" javascript");
    //                        }
    //                    )("hello");
                        
                        /*
                         * 私有(内部)函数:内部类
                         *     * 保证了私有性 ———— 只把必要性的内容暴露给外界,其他所有内容保留在私有空间中
                         *     * 节省全局域命名空间
                         */
    //                    function fn(){
    //                        var a = "javascript";
    //                        
    //                        function n(){
    //                            return a;
    //                        }
    //                        
    //                        return n();
    //                    }
                        
    //                    alert(fn());        //output    javascript
    //                    alert(n());            //output    undefind
                        
                        /*
                         * 返回函数的函数
                         *     * 在定义一个函数的时候,可以执行两个逻辑代码
                         *     * 第一个函数,没有真正的返回值
                         */
                        function fn(){
                            var a = "javascript";
                            
                            return function(){
                                return a;
                            }
                        }
                        
                        //alert(fn());        //output    function(){return a;}
                        
                        //var fun = fn();
                        //var fun = function(){return a;}
                        
                        //alert(fun());        //output    javascript
                        
                        alert(fn()());        //output    javascript
                        
      </script>
    </html>

    闭包:

    <!DOCTYPE html>
    <html>
      <head>
        <title>01_作用域链.html</title>
        
        <meta name="keywords" content="keyword1,keyword2,keyword3">
        <meta name="description" content="this is my page">
        <meta name="content-type" content="text/html; charset=UTF-8">
        
        <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
    
      </head>
      
      <body>
        This is my HTML page. <br>
      </body>
      <script type="text/javascript">
                          var a = "a";
                        
                        function fn(){
                            var b = "b";
                            
                            alert(a);        //output    a
                            
                            alert(b);        //output    b
                            
                            function n(){
                                var c = "c";
                                
                                alert(a);        //output    a
                                
                                alert(b);        //output    b
                                
                                alert(c);        //output    c
                            }
                            
                            return n();
                        }
                        
                        fn();
                        
                        
                        
                        
      </script>
    </html>
    <!DOCTYPE html>
    <html>
      <head>
        <title>02_闭包.html</title>
        
        <meta name="keywords" content="keyword1,keyword2,keyword3">
        <meta name="description" content="this is my page">
        <meta name="content-type" content="text/html; charset=UTF-8">
        
        <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
    
      </head>
      
      <body>
        This is my HTML page. <br>
      </body>
      <script type="text/javascript">
                          var a = "a";
                        var n;                
                        function fn(){
                            var b = "b";
                            alert(a);        //output    a                
                            alert(b);        //output    b                    
                            n = function(){
                                var c = "c";                        
                                alert(a);        //output    a                            
                                alert(b);        //output    b                        
                                alert(c);        //output    c
                            }        
    
    
    
                            return n();
                        }                    
                        fn();
                        n();
      </script>
    </html>
    <!DOCTYPE html>
    <html>
      <head>
        <title>03_循环中的闭包.html</title>
        
        <meta name="keywords" content="keyword1,keyword2,keyword3">
        <meta name="description" content="this is my page">
        <meta name="content-type" content="text/html; charset=UTF-8">
        
        <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
    
      </head>
      
      <body>
        This is my HTML page. <br>
      </body>
      <script type="text/javascript">
                      /*
                       * * 定义函数f()
                       *         * 定义一个空的数组a
                       *         * 定义局部变量i
                       *         * 遍历,循环3遍,变量i:0,1,2,3
                       *             初始化数组a:a[0],a[1],a[2],function(){return i;}
                       *         * 返回数组a
                       * * 定义一个全局变量fun,将函数f()的返回值,赋值给变量fun(fun是数组)
                       */
    //                function f(){
    //                    var a = [];
    //                    var i;
    //                    for(i = 0; i < 3; i++){
    //                        a[i] = function(){
    //                            return i;
    //                        }
    //                    }
    //                    return a;
    //                }
    //                
    //                var fun = f();
    //                
    //                alert(fun[0]());        //output    3
    //                alert(fun[1]());        //output    3
    //                alert(fun[2]());        //output    3
                    
    //                function f(){
    //                    var a = [];
    //                    var i;
    //                    function n(x){
    //                        return x;
    //                    }
    //                    for(i = 0; i < 3; i++){
    //                        a[i] = n(i);
    //                    }
    //                    return a;
    //                }
    //                
    //                var fun = f();
    //                
    //                alert(fun[0]);        //output    0
    //                alert(fun[1]);        //output    1
    //                alert(fun[2]);        //output    2
                    
                    function f(){
                        var a = [];
                        var i;
                        for(i = 0; i < 3; i++){
                            a[i] = (
                                function(x){
                                    return x;
                                }
                            )(i);
                        }
                        return a;
                    }
                    
                    var fun = f();
                    
                    alert(fun[0]);        //output    0
                    alert(fun[1]);        //output    1
                    alert(fun[2]);        //output    2
    
      </script>
    </html>

    对象:

    <!DOCTYPE html>
    <html>
      <head>
        <title>01_定义对象的三种方式.html</title>
        
        <meta name="keywords" content="keyword1,keyword2,keyword3">
        <meta name="description" content="this is my page">
        <meta name="content-type" content="text/html; charset=UTF-8">
        
        <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
    
      </head>
      
      <body>
        This is my HTML page. <br>
      </body>
      <script type="text/javascript">
                          //1 new Object()
    //                    var obj = new Object();
                        
                        //2 直接量方式:最多
    //                    var obj = {
    //                        name : "javascript",
    //                        sayMe : function(){
    //                            alert("javascript");
    //                        }
    //                    }
                        
                        //3 定义函数对象:最重要
    //                    function obj(){
    //                        //this代表obj对象
    //                        this.name = "javascript";
    //                        this.sayMe = function(){
    //                            alert("javascript");
    //                        }
    //                    }
                        
                        //定义一个空的对象
    //                    var obj1 = new Object();
    //                    var obj2 = {}
                        
                        //面试题:以下哪个选项是错误的?D
    //                    var a = {};        //定义一个空的对象
    //                    var b = [];        //定义一个空的数组
    //                    var c = //;        //定义一个空的正则表达式
    //                    var d = ();
                        
                        //面试题(百度):要求在alert()中,实现换行
                        alert("xxx
    yyy");
                        
      </script>
    </html>
    <!DOCTYPE html>
    <html>
      <head>
        <title>02_操作对象的属性和方法.html</title>
        
        <meta name="keywords" content="keyword1,keyword2,keyword3">
        <meta name="description" content="this is my page">
        <meta name="content-type" content="text/html; charset=UTF-8">
        
        <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
    
      </head>
      
      <body>
        This is my HTML page. <br>
      </body>
      <script type="text/javascript">
    //                          var obj = {
    //                            name : "javascript",
    //                            sayMe : function(){
    //                                alert("javascript");
    //                            }
    //                        }
                            
                            //调用对象obj的属性和方法
    //                        alert(obj.name);        //output    javascript
    //                        obj.sayMe();            //output    javascript
                            
                            //删除对象obj的属性和方法
    //                        delete obj.name;
    //                        alert(obj.name);        //output    undefind
                            
    //                        delete obj.sayMe;
    //                        obj.sayMe();            //output    javascript
                            
                            //修改对象obj的属性和方法
    //                        obj.name = "jscript";
    //                        alert(obj.name);        //output    jscript
                            
    //                        obj.sayMe = function(){
    //                            alert("jscript");
    //                        }
    //                        obj.sayMe();            //output    jscript
                            
                            function Hero(){
                                this.name = "HERO";
                                this.sayMe = function(){
                                    alert("HERO");
                                }
                            }
                            
                            alert(Hero.name);
                            
    //                        var hero = new Hero();
                            
                            //调用函数对象Hero的属性和方法
    //                        alert(hero.name);        //output    HERO
    //                        hero.sayMe();            //output    HERO
                            
                            //删除函数对象Hero的属性和方法
    //                        delete hero.name;
    //                        alert(hero.name);        //output    undefind
                            
    //                        delete hero.sayMe;
    //                        hero.sayMe();            //output    undefind
                            
                            //修改函数对象Hero的属性和方法
                            hero.name = "hero";
                            alert(hero.name);        //output    hero
                            
    //                        hero.sayMe = function(){
    //                            alert("hero");
    //                        }
    //                        hero.sayMe();            //output    hero
                            
      </script>
    </html>
    <!DOCTYPE html>
    <html>
      <head>
        <title>03_this的用法.html</title>
        
        <meta name="keywords" content="keyword1,keyword2,keyword3">
        <meta name="description" content="this is my page">
        <meta name="content-type" content="text/html; charset=UTF-8">
        
        <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
    
      </head>
      
      <body>
        This is my HTML page. <br>
      </body>
      <script type="text/javascript">
                          /*
                           * this的用法:
                           *     * this表示HTML页面中具体的元素内容
                           *     * this表示一个明确的对象
                           * 
                           * this的用法:程序员又爱又恨
                           *     * 建议:只用会用的
                           *     * 经常搞不清楚this指代谁,尽量不用!
                           */
                        function Hero(){
                            this.name = "javascript";
                            this.sayMe = function(){
                                alert(this.name);
                            }
                        }
                        
                        var hero = new Hero();
                        
                        hero.sayMe();        //output    javascript
                        
      </script>
    </html>
    <!DOCTYPE html>
    <html>
      <head>
        <title>04_Array对象.html</title>
        
        <meta name="keywords" content="keyword1,keyword2,keyword3">
        <meta name="description" content="this is my page">
        <meta name="content-type" content="text/html; charset=UTF-8">
        
        <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
    
      </head>
      
      <body>
        This is my HTML page. <br>
      </body>
      <script type="text/javascript">
                          var arr1 = [];
                        var arr2 = new Array();
                        
                        alert(typeof arr1);            //output    object
                        alert(typeof arr2);            //output    object
                        
                        //反转字符串示例(这种方式java与javascript不一样)
        
    //                    //定义一个字符串
    //                    var str = "abcdefg";
    //                    //利用String对象的split()方法,将字符串切割成一个数组
    //                    var arr = str.split("");
    //                    //利用Array对象的reverse()方法,将数组中元素的顺序颠倒。
    //                    arr = arr.reverse();
    //                    //测试打印
    //                    alert(arr.toString());
    
      </script>
    </html>
    <!DOCTYPE html>
    <html>
      <head>
        <title>05_String对象.html</title>
        
        <meta name="keywords" content="keyword1,keyword2,keyword3">
        <meta name="description" content="this is my page">
        <meta name="content-type" content="text/html; charset=UTF-8">
        
        <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
    
      </head>
      
      <body>
        This is my HTML page. <br>
      </body>
      <script type="text/javascript">
    //                      var str1 = "aaa";
    //                    var str2 = new String("aaa");
    //                    
    //                    alert(typeof str1);            //output    string
    //                    alert(typeof str2);            //output    object
                        
                        //判断字符串是否包含指定字符串示例
        
                        //定义两个要判断的字符串
                        var str = "abcdefg";
                        var substr = "xyz";
                        /*
                         * 定义判断字符串是否包含指定字符串的函数
                         *     * 第一个参数:要判断的字符串
                         *     * 第二个参数:指定的字符串
                         */
                        function sub(str,substr){
                            //将判断的字符串定义成String对象
                            var string = new String(str);
                            //截取判断的字符串
                            var result = string.substr(string.indexOf(substr),substr.length);
                            
                            /*
                             * 判断截取后的字符串是否为空
                             *     * 为空,说明不包含指定字符串
                             *     * 不为空,说明包含指定字符串
                             */
                            if(result==substr){
                                return true;
                            }else{
                                return false;
                            }
                        }
                        
                        alert(sub(str,substr));
    
                        
      </script>
    </html>
    <!DOCTYPE html>
    <html>
      <head>
        <title>01_原型的作用.html</title>
        
        <meta name="keywords" content="keyword1,keyword2,keyword3">
        <meta name="description" content="this is my page">
        <meta name="content-type" content="text/html; charset=UTF-8">
        
        <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
    
      </head>
      
      <body>
        This is my HTML page. <br>
      </body>
      <script type="text/javascript">
                          function Hero(){
                            this.name = "javascript";
                            this.sayMe = function(){
                                alert("javascript");
                            }
                        }
                        
    //                    var hero = new Hero();
                        
                        //利用原型属性,为函数对象增加属性和方法
                        
                        //函数对象.原型.属性名 = 属性值
                        Hero.prototype.value = "HERO";
                        
                        var hero = new Hero();
                        
                        alert(hero.value);
                        
    //                    Hero.prototype.sayHero = function(){
    //                        alert("HERO");
    //                    }
    //                    
    //                    hero.sayHero();
                        
                        /*
                         * * 先new对象,再增加属性和方法:无效
                         * * 先增加属性和方法,再new对象:有效
                         */
    //                    Hero.prototype = {
    //                        value : "HERO",
    //                        sayHero : function(){
    //                            alert("HERO");
    //                        }
    //                    }
    //                    
    //                    var hero = new Hero();
                        
                        alert(hero.value);
                        
      </script>
    </html>
    <!DOCTYPE html>
    <html>
      <head>
        <title>02_原型属性与自身属性同名.html</title>
        
        <meta name="keywords" content="keyword1,keyword2,keyword3">
        <meta name="description" content="this is my page">
        <meta name="content-type" content="text/html; charset=UTF-8">
        
        <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
    
      </head>
      
      <body>
        This is my HTML page. <br>
      </body>
      <script type="text/javascript">
    //                          function Hero(){
    //                            this.name = "javascript";
    //                        }
    //                        
    //                        Hero.prototype.name = "jscript";
    //                        
    //                        var hero = new Hero();
    //                        
    ////                        alert(hero.name);            //output    javascript
    //                        
    //                        delete hero.name;
    //                        
    //                        alert(hero.name);            //output    
                            
                            //定义空的函数对象
                            function Hero(){}
                            
                            Hero.prototype.name = "javascript";
                            
                            var hero = new Hero();
                            
                            hero.name = "jscript";
                            
                            alert(hero.name);        //output    javascript
                            
                            delete hero.name;
                            
      </script>
    </html>
    <!DOCTYPE html>
    <html>
      <head>
        <title>03_扩展内建对象.html</title>
        
        <meta name="keywords" content="keyword1,keyword2,keyword3">
        <meta name="description" content="this is my page">
        <meta name="content-type" content="text/html; charset=UTF-8">
        
        <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
    
      </head>
      
      <body>
        This is my HTML page. <br>
      </body>
      <script type="text/javascript">
                          //为原型 Array对象增加一个判断的函数
                        Array.prototype.inArray = function(color){
                            //this指代Array对象
                            for(var i = 0, len = this.length; i < len; i++){
                                if(this[i] === color){
                                    return true;
                                }
                            }
                            return false;
                        }
                            
                        //定义一个Array对象
                        var a = ["red", "green", "blue"];
                            
                        //测试
                        alert(a.inArray("red"));        //true
                        alert(a.inArray("yellow"));        //false
    
                        /*
                         * * javascript的内建对象,提供很多属性和方法
                         * * 不能满足所有的需求,所以自定义属性或方法
                         * * 通过原型,将自定义的方法,添加到了内建对象上
                         * * 可以调用自定义方法,像内建对象原生方法一样
                         */
                        
      </script>
    </html>

    继承:

    <!DOCTYPE html>
    <html>
      <head>
        <title>01_对象之间的继承.html</title>
        
        <meta name="keywords" content="keyword1,keyword2,keyword3">
        <meta name="description" content="this is my page">
        <meta name="content-type" content="text/html; charset=UTF-8">
        
        <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
    
      </head>
      
      <body>
        This is my HTML page. <br>
      </body>
      <script type="text/javascript">
                          //如果javascript中,支持继承的语法
                        function A(){
                            this.name = "a";
                            this.sayA = function(){
                                alert("a");
                            }
                        }
                        
                        function B(){
                            this.value = "b";
                            this.sayB = function(){
                                alert("b");
                            }
                        }
                        
                        B.prototype = new A();
                        
                        var b = new B();
                        
                        alert(b.name);            //output    a
                        b.sayA();                //output    a
                        
                        
                        
      </script>
    </html>
    <!DOCTYPE html>
    <html>
      <head>
        <title>02_只继承于原型.html</title>
        
        <meta name="keywords" content="keyword1,keyword2,keyword3">
        <meta name="description" content="this is my page">
        <meta name="content-type" content="text/html; charset=UTF-8">
        
        <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
    
      </head>
      
      <body>
        This is my HTML page. <br>
      </body>
      <script type="text/javascript">
    //                      function A(){
    //                        this.name = "a";
    //                        this.sayA = function(){
    //                            alert("a");
    //                        }
    //                    }
    //                    
    //                    function B(){
    //                        this.value = "b";
    //                        this.sayB = function(){
    //                            alert("b");
    //                        }
    //                    }
    //                    
    //                    B.prototype = A.prototype;
    //                    
    //                    var b = new B();
    //                    
    //                    alert(b.name);            //output    undefind
                        
    //                    function A(){}
    //                    
    //                    A.prototype = {
    //                        name : "a",
    //                        sayA : function(){
    //                            alert("a");
    //                        }
    //                    }
    //                    
    //                    //定义一个空的函数对象B
    //                    function B(){}
    //                    
    //                    //将函数对象A的原型内容,赋值给函数对象B的原型
    //                    B.prototype = A.prototype;
    //                    
    //                    //向函数对象B的原型上增加属性和方法
    //                    B.prototype = {
    //                        value : "b",
    //                        sayB : function(){
    //                            alert("b");
    //                        }
    //                    }
    //                    
    //                    //将函数对象A的原型内容,赋值给函数对象B的原型
    ////                    B.prototype = A.prototype;
    //                    
    //                    var b = new B();
    //                    
    //                    alert(b.name);        //output    a
    //                    alert(b.value);        //output undefined
                        
                        
                        function A(){}
                        
                        A.prototype = {
                            name : "a",
                            sayA : function(){
                                alert("a");
                            }
                        }
                        
                        //定义一个空的函数对象B
                        function B(){}
                        
                        //将函数对象A的原型内容,赋值给函数对象B的原型
                        B.prototype = A.prototype;
                        
                        B.prototype.value = "b";
                        
                        var b = new B();
                        
                        alert(b.name);        //output    a
                        alert(b.value);        //output    b
                        
                        
                        
      </script>
    </html>
    <!DOCTYPE html>
    <html>
      <head>
        <title>03_普通对象的继承.html</title>
        
        <meta name="keywords" content="keyword1,keyword2,keyword3">
        <meta name="description" content="this is my page">
        <meta name="content-type" content="text/html; charset=UTF-8">
        
        <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
    
      </head>
      
      <body>
        This is my HTML page. <br>
      </body>
      <script type="text/javascript">
                    //该函数接受一个对象并返回它的副本
                    function extendCopy(p){
                        var z = {};    //定义一个空的对象z
                        for(var i in p){    //var i =0 ; i < p.length ; i++
                            z[i] = p[i];    //都当做数组处理的话,可以理解
                        }
                        //uber属性:将p作为z的父级,将z指向p的原型
                        z.uber = p;
                        return z;
                    }
                    //定义对象a,但是对象a不是函数对象    
                    var a = {
                        name : "a"
                    }
                    //定义对象b,但是对象b不是函数对象    
                    var b = extendCopy(a);
                    b.toStr = function(){return this.name;};
                        
                    alert(b.toStr());        //output    a
    
      </script>
    </html>
  • 相关阅读:
    PL/pgSQL的RETURN QUERY例子
    PL/pgSQL的 RETURN NEXT例子
    PL/pgSQL学习笔记之二
    基于React的PC网站前端架构分析
    DialogFragment创建默认dialog
    一个RecycleView的强大adapter
    企业者的福音之8266接入阿里智能,点亮一盏灯。
    基于webmagic的种子网站爬取
    自上而下渐显图片的CSS3实现
    用SwiftGen管理UIImage等的String-based接口
  • 原文地址:https://www.cnblogs.com/vaer/p/3924708.html
Copyright © 2020-2023  润新知