JavaScript 一些语言特性

Posted zsbenn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript 一些语言特性相关的知识,希望对你有一定的参考价值。

1.函数原型对象 Function 的使用

   <!--将字符串转换成可执行的代码-->
    小朋友,请输入简单计算
    <input type="text" id="calc"/>
    <input type="button" value="计算" onclick="calc()"/>
    结果:<span id="result"></span>
    <script>
        function calc(){
            /*
                函数原型Function,可以将里面的语句转换成代码进行执行
            */
            var t = new Function(‘return ‘+document.getElementById("calc").value+‘;‘);
            document.getElementById(‘result‘).innerhtml= t();
        }
    </script>

 

2.JSON的使用

  <!--JSON的使用-->
    <script>
        debugger;
        var json = {
            xx:[1,34,{name:"张三",arr:[1,2,3,"abc"]}],
            yy:34
        }    
        /*将JSON转换成字符串*/    
        var strJson = JSON.stringify(json);
        /*将字符串转换成JSON*/
        var json2 = JSON.parse(strJson);
    </script>


    <!--利用JSON进行对象克隆-->
    <script>
        var obj = {a:1, b:2};
        var obj_clone = JSON.parse(JSON.stringify(obj));
    </script>

 

3.对象和数组的统一

  <script>
        var arr = [[1,2,3],[1,2,3]];
        var arr1 = new Array(1,2,3,"abc");    
        arr1[0]=20;
        arr1[100]=12;//可以越界,且按语义正常执行

        var obj = {a:1, "b":"abc", "zhang san":"name", "age":23};
        
        obj.b = 45;        //1
        obj["b"] = 67;    //2和1等价
        var b = ‘123‘;    
        obj[b]=67;        //3和1不等价

        obj["zhang san"] = "123";    //4
        obj["arr"] = 1;                //5
        obj[arr] = 1;                //6和5不等价,此时obj中多了 arr:1 这样的值

        // 遍历json对象的key集合
        for(var key in obj)
            alert(key+":"+obj[key]);
    </script>

 

4.join和split

    <script>
        // join将数组通过某种方式连接成字符串
        var arr = ["zhangsan","lisi","wangwu"];
        var arrStr = arr.join(";");// 用";"进行连接

        // split将字符串通过某个分隔符进行分割
        var str = "123465 45647 123";
        var strArr = str.split(" ");
        var sum = 0;
        for(var i in strArr)
            sum += parseInt(strArr[i], 10);//字符串->十进制
    </script> 

 

5.类,方法,函数,独享空间和共享空间

    <!--类,方法和函数,共享空间和独享空间-->
    <script>
        debugger;

        // 定义在这里的都是对象的独享空间
        function f(_name,_age){
            this.name = _name;
            this.age = _age;
            return 1;
        }
        
        // 通过prototype定义的是类的共享空间
        f.prototype.getName = function(){
            return this.name;
        }
        f.prototype.sex = 1;

        var o = {};
        o.f = f;                    // 此时f被用作对象的方法,里面的this指的是对象o

        var r1 = f(‘zsben‘,42);        // 此时f被用作函数调用,里面的this指的是全局window
        var obj2 = new f(‘z1‘,12);
        var obj3 = new f(‘z2‘,32);    // 此时f被用作类进行构造,里面的this指的是构造出来的对象 

        o.f(‘z3‘,56);                // 调用o的方法f

        f(‘xxx‘,100);                // 此时window的name=‘xxx‘,age=100

        // 修改共享空间的属性
        obj2.sex = 2;                // 通过对象修改共享空间:此时是将共享空间的属性拷贝一份到了obj2的独享空间
        f.prototype.sex = 3;        // 通过原型修改共享空间:只能通过原型来改变共享空间的值

    </script>

 

6.继承和多态

  <!--继承与多态机制-->
    <script>
        function Person(_name,_age){
            this.name = _name;
            this.age = _age;
        }
        function Student(_no){
            this.no = _no;
        }
        // 将父亲拷贝到共享空间,就是继承了父亲属性
        Student.prototype = new Person("NoName", 0);
        
        var p1 = new Person("张三",23);
        var p2 = new Person("李四",24);

        var s1 = new Student("101010");
        var s2 = new Student("101011");

        // 此时对象要修改共享空间的属性,就直接复制一份属性到独享空间去了,不会影响共享空间的值
        s1.name = "王五"; 
        s2.name = "赵六";

    </script>

 

以上是关于JavaScript 一些语言特性的主要内容,如果未能解决你的问题,请参考以下文章

你可能不知道的JavaScript代码片段和技巧(下)

你可能不知道的JavaScript代码片段和技巧(上)

译文:18个实用的JavaScript代码片段,助你快速处理日常编程任务

Scala.js:将Scala编译为JavaScript

常用Javascript代码片段集锦

代码片段使用复杂的 JavaScript 在 UIWebView 中插入 HTML?