zoukankan      html  css  js  c++  java
  • JavaScript学习要点

    Javascript相关内容

    1.序列化--json

    - stringify() 将对象转换为字符串

    - parse() 将字符串转换为对象

    list=[11,22,33,44,55];
      结果:(5) [11, 22, 33, 44, 55]
    str=JSON.stringify(list);
      结果:"[11,22,33,44,55]"
    list1=JSON.parse(str);
      结果:(5) [11, 22, 33, 44, 55]

    2.字符串转义--encodeURI

    - encodeURI(url);

    - decodeURI(url);

    - decodeURIComponent(url) ;

    - encodeURIComponent(url);

    url="https://www.sogou.com/web?query=土味程序员";
      转义结果:"https://www.sogou.com/web?query=土味程序员"
    changeStr=encodeURI(url);
      转义结果:"https://www.sogou.com/web?query=%E7%8E%8B%E6%98%9F%E4%BC%9F"
    changeStr1=encodeURIComponent(url);
      转义结果:"https%3A%2F%2Fwww.sogou.com%2Fweb%3Fquery%3D%E7%8E%8B%E6%98%9F%E4%BC%9F"
    decodeURI(changeStr);
      转义结果:"https://www.sogou.com/web?query=土味程序员"
    decodeURIComponent(changeStr1);
      转义结果:"https://www.sogou.com/web?query=土味程序员

    小知识:通常登入界面,第一次登入后,后面就不需要再次登入,可以直接访问,。原理:客户端连接后,服务器会下发一串**********给客户端,客户端将**********通过转义

    后保存在cookie中,仅供博主自己参考。

    3.eval

      eval方法只接受原始字符串作为参数,如果 string 参数不是原始字符串,那么该方法将不作任何改变地返回。因此请不要为 eval() 函数传递 String 对象来作为参数。

    如果试图覆盖 eval 属性或把 eval() 方法赋予另一个属性,并通过该属性调用它,则 ECMAScript 实现允许抛出一个 EvalError 异常。(引用百度说明)

      话不多说直接上例子:

    num = eval("2+2");
    输出:4
    var x=4;
    num=eval("x+4");
    输出:8

      python:函数eval(表达式);

          函数exec(执行代码);

      javascript:eval中既可以是函数也可以是表达式;

    4.时间

    - Date()函数

    var time=new Date();//变量声明时需要使用new关键字
    time.getDate();//获取当前日期
    time.getDay();//当前是星期几
    time.getYear();//获取当前的年
    
    time.setDate(n);
    time.setDay(n);
    time.setYear(n);

    Date的相关函数:

    Date() 返回当日的日期和时间。
    getDate() 从 Date 对象返回一个月中的某一天 (1 ~ 31)。
    getDay() 从 Date 对象返回一周中的某一天 (0 ~ 6)。
    getMonth() 从 Date 对象返回月份 (0 ~ 11)。
    getFullYear() 从 Date 对象以四位数字返回年份。
    getYear() 请使用 getFullYear() 方法代替。
    getHours() 返回 Date 对象的小时 (0 ~ 23)。
    getMinutes() 返回 Date 对象的分钟 (0 ~ 59)。
    getSeconds() 返回 Date 对象的秒数 (0 ~ 59)。
    getMilliseconds() 返回 Date 对象的毫秒(0 ~ 999)。
    getTime() 返回 1970 年 1 月 1 日至今的毫秒数。
    getTimezoneOffset() 返回本地时间与格林威治标准时间 (GMT) 的分钟差。
    getUTCDate() 根据世界时从 Date 对象返回月中的一天 (1 ~ 31)。
    getUTCDay() 根据世界时从 Date 对象返回周中的一天 (0 ~ 6)。
    getUTCMonth() 根据世界时从 Date 对象返回月份 (0 ~ 11)。
    getUTCFullYear() 根据世界时从 Date 对象返回四位数的年份。
    getUTCHours() 根据世界时返回 Date 对象的小时 (0 ~ 23)。
    getUTCMinutes() 根据世界时返回 Date 对象的分钟 (0 ~ 59)。
    getUTCSeconds() 根据世界时返回 Date 对象的秒钟 (0 ~ 59)。
    getUTCMilliseconds() 根据世界时返回 Date 对象的毫秒(0 ~ 999)。
    parse() 返回1970年1月1日午夜到指定日期(字符串)的毫秒数。
    setDate() 设置 Date 对象中月的某一天 (1 ~ 31)。
    setMonth() 设置 Date 对象中月份 (0 ~ 11)。
    setFullYear() 设置 Date 对象中的年份(四位数字)。
    setYear() 请使用 setFullYear() 方法代替。
    setHours() 设置 Date 对象中的小时 (0 ~ 23)。
    setMinutes() 设置 Date 对象中的分钟 (0 ~ 59)。
    setSeconds() 设置 Date 对象中的秒钟 (0 ~ 59)。
    setMilliseconds() 设置 Date 对象中的毫秒 (0 ~ 999)。
    setTime() 以毫秒设置 Date 对象。
    setUTCDate() 根据世界时设置 Date 对象中月份的一天 (1 ~ 31)。
    setUTCMonth() 根据世界时设置 Date 对象中的月份 (0 ~ 11)。
    setUTCFullYear() 根据世界时设置 Date 对象中的年份(四位数字)。
    setUTCHours() 根据世界时设置 Date 对象中的小时 (0 ~ 23)。
    setUTCMinutes() 根据世界时设置 Date 对象中的分钟 (0 ~ 59)。
    setUTCSeconds() 根据世界时设置 Date 对象中的秒钟 (0 ~ 59)。
    setUTCMilliseconds() 根据世界时设置 Date 对象中的毫秒 (0 ~ 999)。
    toSource() 返回该对象的源代码。
    toString() 把 Date 对象转换为字符串。
    toTimeString() 把 Date 对象的时间部分转换为字符串。
    toDateString() 把 Date 对象的日期部分转换为字符串。
    toGMTString() 请使用 toUTCString() 方法代替。
    toUTCString() 根据世界时,把 Date 对象转换为字符串。
    toLocaleString() 根据本地时间格式,把 Date 对象转换为字符串。
    toLocaleTimeString() 根据本地时间格式,把 Date 对象的时间部分转换为字符串。
    toLocaleDateString() 根据本地时间格式,把 Date 对象的日期部分转换为字符串。
    UTC() 根据世界时返回 1970 年 1 月 1 日 到指定日期的毫秒数。
    valueOf() 返回 Date 对象的原始值。
     
       

    5.作用域

      其他语言的作用域 ==》代码块;

      python的作用域 ==》 函数;

      JavaScript的作用域 ==》函数;

    要点:

    1. JavaScript以函数为作用域。
    2. 函数的作用域在函数未被调用之前已经建立。
    3. 函数的作用域在作用域链中,并且也是在调用之前建立。
    4. 函数内的局部变量提前声明。
    name="tuwei";
    function func(){
        var name =  "tuwei1";
        function inner(){
            console.log(name);
         }  
        retuen inner;      
    }
    var ref = func();
        ref();
    //打印"tuwei1" ;

      遇到作用域问题严格按照上述4点来判断。

    function func(){
        console.log(name);  
        var name="tuwei";
    }
    
    func();
    //程序打印undefine;  
    1.var xxoo=undefine;
    2.console.log(name);
    3.var xxoo="tuwei";                     

    6.面向对象

    function Foo(name){
        this.name=name;
        this.sayName=function(){
            console.log(this.name);
        }
    }
    
    var obj = new Foo("程序员");
    console.log(obj.name);
    obj.sayName;
    var obj1 = new Foo("程序员1");
    console.log(obj1.name);
    obj1.sayName;
    此处代码运行有问题:1.只打印了obj.name和obj1.name两个参数(尚未明白)。
              2.每个对象都会申请一个sayName函数,这样会占用大量空间(是否有方法解决此问题)。
    为了解决问题2:javascript引入了原型。
    请看代码分析:
    function Foo(name){
        this.name=name;
    }
    //原型
    Foo.prototype={
        // body... 
        'sayName':function(){
            console.log(this.name);
        }
    };
    
    var obj = new Foo("程序员");
    console.log(obj.name);
    obj.sayName;
    var obj1 = new Foo("程序员1");
    console.log(obj1.name);
    obj1.sayName;

      原型的概念类似于python中的class类方法,会将所有对象的相同方法统一存放于某个地区,方便对象的调用。

      格式如上述代码所示。

      


            

      

  • 相关阅读:
    Win32 DPAPI加密编程
    .NET环境下的DPAPI加密编程
    Windows加密API的功能分类
    Windows加密API的层次
    Windows加密服务架构
    简单H5单页面真机调试
    vue中使用动画vue-particles
    particular.js
    sublime快捷键
    判断内核
  • 原文地址:https://www.cnblogs.com/wangxingwei/p/10496169.html
Copyright © 2011-2022 走看看