zoukankan      html  css  js  c++  java
  • JavaScript模式读书笔记 第3章 字面量和构造函数

    1,对象字面量
        -1,Javascript中所创建的自定义对象在任务时候都是可变的。可以从一个空对象开始,根据需要增加函数。对象字面量模式可以使我们在创建对象的时候向其添加函数。
          <script>
    //定义空对象
    var dog = {};
    //对空对象添加方法
    dog.name = "Liubo";
    //对对象增加方法
    dog.getName = function(){
    return dog.name;
    };
    //改变属性和方法
    dog.getName = function(){
    returen "LaoLiu";
    };
    //完全删除属性/方法
    delete dog.name;
      </script>
     
    <script>
    var dog = {
    name: "LaoLiu",
    getName:function(){
    return this.name;
    }
    };
      </script>
    -2,对象字面量语法
      a. 将对象包装在大括号中。
      b. 对应以逗号分割属性和方法。
      c. 用冒号分割属性名和属性值。
      d. 当变来那个复制的时候,以右括号结束。

    2,自定义构造函数:
         
    <script>
    var Person = function(name){
    this.name = name;
    this.say = function(){
    return "I am " + this.name;
    }
    }
    var adam = new Person("Adam");
    console.log(adam.say());
      </script>

        当以new操作符调用构造函数的时候:
            a. 创建一个空对象,并且this变量引用该对象,同时还继承了该函数的原型。
            b.属性和方法被加入到this引用的对象中。
            c.新创建的对象由this所引用,并且最后隐式的返回this。
    以上代码,在后台实际执行如下所示:
        
    var Person = function(name){
    var this  = {};
    this.name = name;
    this.say = function(){
    return "I am " + this.name
    };
    //return this;
    };
    3,构造函数的返回值。
       
      <script>
    var Objectmark = function(){
    this.name = "This is it!";
    var that = {};
    that.name = "And that is that!";
    return that;//因为return that所以导致第一次初始化的name将被忽略
    };
    var o = new Objectmark();
    console.log(o.name);
      </script>
    4,强制使用new的模式
    <script>
    function Man(){
    this.name = "Lao Liu";
    }
    //创建新对象
    var laoLiu = new Man();
    console.log(typeof laoLiu);// object
    console.log(laoLiu.name);//Lao Liu
    //反模式
    //未使用new操作
    var pangLiu =  Man();
    console.log(typeof pangLiu);//undefined
    console.log(pangLiu.name);//Cannot read property 'name' of undefined 
      </script>


    5,数组、
        1, var a = [3];//声明一个长度为1 ,a[0] = 3 的数组。
        2,var a = new Array(3);//声明一个长度为3的数组
    6,JSON:即为大括号包含起来的key-value
        JSON解析:
     <script>
    var jstr = '{"mykey" : "my value"}';
    //反模式
    var data = eval('(' + jstr + ')');
    console.log(data);
    //推荐使用
    data = JSON.parse(jstr);
    console.log(data.mykey);
      </script>

    JSON封装:
      <script>
    var dog = {
    name : "LaoLIu", 
    dob: new Date(),
    legs: [1, 2, 3, 4]
    };
    var jsonStr = JSON.stringify(dog);
    console.log(jsonStr);//{"name":"LaoLIu","dob":"2014-11-07T06:17:28.097Z","legs":[1,2,3,4]}
      </script>
    7,正则表达式
         a.使用new RegExp生成正则表达式。
         b.使用字面量语法
    8,基本类型包装器
        Javascript的五类基本类型:数字、字符串、布尔、null和undefined。
        分别对应: Number()   String()   Boolean()
     
    <script>
    var n = 100;
    console.log(typeof n);//number
    var nobj = new Number(100);
    console.log(typeof nobj);//object
    var s = "hello";
    console.log(s.toUpperCase());//HELLO
     
    var greet = "1 2 3 4";
    console.log(greet.split(" ")[0]);//1
      </script>
    9,错误对象(异常捕获)
            
       
       <script>
    try{
    throw{
    name:"MyError",//自定义错误类型
    message:'oops',
    extra: 'This is Exception',
    remedy: genericErrorhandler//指定应该处理该错误的函数
    };
    }catch(e){
     
    alert(e.message);
    e.remedy();//调用genericErrorhandler
    }
    function genericErrorhandler(){
    alert("Hi, BigLiu!");
    }
      </script>























    欢迎转载,但转载请注明原文链接[博客园: http://www.cnblogs.com/jingLongJun/]
    [CSDN博客:http://blog.csdn.net/mergades]。
    如相关博文涉及到版权问题,请联系本人。
  • 相关阅读:
    浮点数
    opencv笔记-GFTTDetector
    有向图与关联矩阵
    亚像素角点
    字符串格式化输出
    字符串表示与转换
    Bresenham算法
    罗德里格斯公式
    模型调参
    jave 逻辑运算 vs 位运算 + Python 逻辑运算 vs 位运算
  • 原文地址:https://www.cnblogs.com/jingLongJun/p/4491080.html
Copyright © 2011-2022 走看看