zoukankan      html  css  js  c++  java
  • js函数对象

    一、函数

     //function测试
    
     //函数是可以嵌套的
        function FuncTest() {
            function square(x) { return x * x; }
            return square(10);
        }
        FuncTest();
    
      //在函数体内可以通过arguments.length获取传入函数的实参个数
      function fun1(x, y){
          console.log(arguments.length);
      }
      fun1(10,1);
    
      //将函数绑定到对象里
      var fun2 = function(){
          console.log(this.name);
      }
      var o = {name: "张三", fn: fun2};
      o.fn();

    二、对象

    1、创建对象

      1、对象直接量。

        var point = { x:0,y:0 };  //point就是一个对象,跟C#不同,它不需要一定有类才能创建对象。

      2、通过new创建对象

        var d = new Date();    //创建一个Date对象

      3、原型

        Object.prototype  //用于获取对象原型的引用。所有对象都直接或间接继承自Object.prototype,相当于C#中的System.Object();

        通过new Date()创建的对象同时继承自Date.prototype和Object.prototype。

      4、Object.create()

        Object.create()是一个静态函数,可以用它创建一个新对象。

    2、属性的读取和设置

      1、属性的读取有两种方法。可以通过"."和"[]"来读取。

        如:var author = book.author;

          var author = book["authoe"];

        设置也一样:

          book.author = "刘德华";

          book["author"] = "刘德华";

        注意,如果对象的属性名与保留字一样,则必须通过方括号读取。

          如:book["class"];

         另外用方括号访问就个好处,就是在运行时确定属性名如book["author" + 1];

      2、继承

        如果要查询对象o的属性x,如果o没有属性x,则会到o的原型去查,一级一级往上,直到Object.prototype。

            var o = {};
            o.x = 1;
            var p = Object.create(o);
            p.x = 2;         //改变了继承的属性x
            document.write(p.x);  //输出2,p.x继承自o.x
            var q = Object.create(o);
            document.write(q.x);  //输出1,p改变的是自己x,改变不了原型的x

    3、删除属性

        delete()   delete()方法只能够删除自有属性,不能够删除继承属性。delete()只是断开属性和宿主对象的联系,而不回去操作属性中的属性。

            var book = {
                author:"刘德华",
                number:123
            }
            delete book.author;        //此行代码也可写成delete book["author"]
            document.write(book.author);  //book.author的值为undefined,因为已经被删除了

    4、检测属性

        in:检测某对象是否含有某个属性

            var o = {
                x:1
            }  
            document.write("x" in o);  //返回true  x是o的一个属性
            document.write("y" in o);  //返回false  y不是o的属性

        hasOwnProperty() 检测对象中是否含有某属性

            var o = {
                x : 1
            }
            document.write(o.hasOwnProperty("x"));  //返回true  o中含有名为"x"的属性
            document.write(o.hasOwnProperty("y"));  //返回false  o中不含有名为"y"的属性

        get() set()属性访问器  没有相应的get(),set()则为只读,或只写属性。

            var o = { 
                x: 1,
                get getx(){ return this.x; },
                set setx(n){this.x = n;}
             };
             document.write(o.getx);  //读取属性值,返回1
             o.setx = 2;         //如果将set setx(n)这行注释,则这行代码可以相当于不存在,设置无效。x依然为1,但不会报错。
             document.write(o.getx);  //再次读取返回2

    5、属性的特性

        writeable:是否可写。

        enumerable:是否可枚举。

        configurable:是否可配置。

    6、对象的序列化

      这个东西非常有用,能够将对象序列化成字符串之后传输,也能够将对象以字符串的格式存在cookie里,拿出来后再反序列化成对象。

        JSON.stringify()   序列化对象(对象转成字符串便于传输)

        JSON.parse()    反序列化对象(字符串转换成原对象,是源对象深拷贝)

                var man = { name: "张三", Age: 24 };
                var str = JSON.stringify(man);    //将对象man序列化成JSON字符串
                document.write(str);
                var newman = JSON.parse(str);     //将字符串反序列成对象
                document.write("<br/>" + newman.name + "," + newman.Age);  //输出反序列化后的对象的属性
  • 相关阅读:
    数据库字段包含反斜杠的查询处理
    sql中的日期时间处理
    查询时间的测试
    group by 和 聚合函数的使用
    比较版本号
    sql IIF函数的应用
    win10系统杀毒功能
    php性能的问题
    linux 下ab压力测试
    datatables的学习总结
  • 原文地址:https://www.cnblogs.com/SmileSunday/p/9204443.html
Copyright © 2011-2022 走看看