• js基础笔记


    js基本数据类型

    • Number, String, Boolean, Null, Undefined。Number, String, Boolean 都有对应的对象进行封装。
    • Number对象基本用法
    /*[Number: 255]
    255 object
    2.220446049250313e-16
    9007199254740991
    1.7976931348623157e+308
    5e-324
    NaN
    -Infinity
    Infinity
    false
    true
    true
    true
    22.334
    332
    2.550e+2
    255.0000
    255
    ff
    object
    number*/
    var num = new Number(255);
    console.log(num);
    console.log(num+" "+(typeof num));
    console.log(Number.EPSILON);
    console.log(Number.MAX_SAFE_INTEGER);
    console.log(Number.MAX_VALUE);
    console.log(Number.MIN_VALUE);
    console.log(Number.NaN);
    console.log(Number.NEGATIVE_INFINITY);
    console.log(Number.POSITIVE_INFINITY);
    console.log(Number.isNaN("2"));
    console.log(Number.isFinite(222222222222222222));
    console.log(Number.isInteger(321));
    console.log(Number.isSafeInteger(555));
    console.log(Number.parseFloat("22.334"));
    console.log(Number.parseInt("332.942"));
    console.log(num.toExponential(3));//有效位数
    console.log(num.toFixed(4));//小数位数
    console.log(num.toPrecision(3));//有效位数
    console.log(num.toString(16));//
    console.log(typeof num);
    console.log(typeof num.valueOf());//原始值
    • String对象基本用法
    /*H
    72
    Hello World   !!!
    -1
    9
    -1
    [ 'Hello World',
      index: 0,
      input: 'Hello World   ',
      groups: undefined ]
    AELLEE World   
    5
    llo W
    [ 'He', '', 'o Wor' ]
    llo 
    ll
    hello world   
    HELLO WORLD   
    Hello World
    Hello World
    Hello World
    World*/
    var str = new String("Hello World   ");
    console.log(str.charAt(0));
    console.log(str.charCodeAt(0));
    console.log(str.concat("!!!"));
    console.log(str.indexOf('x'));
    console.log(str.lastIndexOf('l'));
    console.log(str.localeCompare("Jello World"));
    console.log(str.match(/w+sw+/i));
    console.log(str.replace(/w*ELw*/i, "AELLEE"));
    console.log(str.search(/s+/));
    console.log(str.slice(2,7));
    console.log(str.split('l',3));
    console.log(str.substr(2,4));
    console.log(str.substring(2,4));
    console.log(str.toLowerCase());
    console.log(str.toUpperCase());
    console.log(str.trim());
    console.log(str.trimRight());
    console.log(str.valueOf());
    console.log(str.slice(-8,-3));//length-8, length-3
    • Boolean对象基本用法
    /*[Boolean: true]
    object boolean
    [Boolean: true]*/
    var bool = new Boolean(true);
    console.log(bool);
    console.log(typeof bool+" "+typeof bool.valueOf());
    //生成false传入值包括:0, -0, NaN, null, undefined, "", false
    //生成true传入值包括:"aaa", {}, Infinity, any object...
    console.log(new Boolean(new Boolean(false))); 

    js其他对象

    • Array
     1 var stus = ["Tom", "Jaki", "Lucy", "Ami"];
     2 console.log(typeof stus);
     3 var array = new Array("Tom", "Jaki", "Lucy", "Ami");
     4 console.log(typeof array);
     5 console.log(array[2]);
     6 console.log(Array.isArray(array)+" "+array.length);
     7 array.length = 3;
     8 console.log(array);//溢出元素将丢失
     9 //stack A
    10 var myArray = new Array(1,2,3,4,5);
    11 myArray.pop();//del last one
    12 console.log(myArray);
    13 myArray.push(8);//add at end
    14 console.log(myArray);
    15 //stack B
    16 myArray.shift();//del first one
    17 console.log(myArray);
    18 myArray.unshift(9);//add at first
    19 console.log(myArray);
    20 myArray.reverse();
    21 myArray.sort(function(a,b){
    22     if(a>b)
    23         return 1;
    24     else if(a<b)
    25         return -1;
    26     else
    27         return 0;
    28 });
    29 console.log(myArray);
    30 myArray.splice(4,2,"aaa","bbb","ccc");
    31 console.log(myArray);
    32 myArray = myArray.concat(5,6,7);
    33 console.log(myArray.join('-'));
    34 console.log(myArray.slice(1,4));//from to [a,b)
    35 console.log(myArray.toString());
    36 console.log(myArray.indexOf("aaa"));
    37 console.log(myArray.lastIndexOf(5));
    38 //traverse array A
    39 myArray.forEach(function(element, index, array){
    40     console.log(element,index,array);
    41 }, myArray);
    42 console.log("----------------------------");
    43 //traverse array B, 
    44 //every means all true return true, otherwise false
    45 //some means all false return false, otherwise true
    46 var notHaveCCC = myArray.every(function(element, index, array){
    47     //console.log(this);
    48     console.log(element,index,array);
    49     if(element == "ccc")
    50         return false;
    51     else
    52         return true;
    53 }, myArray);
    54 console.log(notHaveCCC);
    55 //traverse array C
    56 //if pass the filter (return true), be added to new array
    57 var newArray = myArray.filter(function(element, index, array){
    58     //console.log(this);
    59     console.log(element,index,array);
    60     if(element == "ccc")
    61         return true;
    62     else
    63         return false;
    64 }, myArray);
    65 console.log(newArray);
    66 //traverse array D
    67 //map array to another one
    68 newArray = myArray.map(function(element, index, array){
    69     //console.log(this);
    70     return "*"+element+"*";
    71 }, myArray);
    72 console.log(newArray);
    73 //reduce function
    74 newArray = myArray.reduce(function(acc, element, index){
    75     //console.log(this);
    76     return acc+" "+element;
    77 }, "hello");
    78 console.log(newArray);
    79 newArray = myArray.reduceRight(function(acc, element, index){
    80     //console.log(this);
    81     return acc+" "+element;
    82 }, "hello");
    83 console.log(newArray);
    View Code
    • Math
    /*
        Math.E:常数e。  
        Math.LN2:2的自然对数。  
        Math.LN10:10的自然对数。  
        Math.LOG2E:以2为底的e的对数。  
        Math.LOG10E:以10为底的e的对数。  
        Math.PI:常数Pi。  
        Math.SQRT1_2:0.5的平方根。  
        Math.SQRT2:2的平方根。
    
        Math.abs():返回参数的绝对值  
        Math.ceil():向上取整,接受一个参数,返回大于该参数的最小整数。 
        Math.floor():向下取整  
        Math.max(n,n1,...):可接受多个参数,返回最大值  
        Math.min(n,n1,..):可接受多个参数,返回最小值  
        Math.pow(n,e):指数运算, 返回以第一个参数为底数、第二个参数为幂的指数值。 
        Math.sqrt():返回参数值的平方根。如果参数是一个负值,则返回NaN。  
        Math.log():返回以e为底的自然对数值。
        Math.exp():返回e的指数,也就是常数e的参数次方。
        Math.round():四舍五入  
        Math.random():返回0到1之间的一个伪随机数,[0,1)。
    */
    View Code
    • Date
    var date = new Date();
    console.log(date);
    date = new Date(1483888888999);
    console.log(date);
    date = new Date("January 17, 2019 11:15:00");
    console.log(date);
    date = new Date(2019, 1, 15, 11, 15, 0, 0);
    console.log(date);
    console.log(Date.now());
    console.log(Date.parse("January 17, 2019 11:15:00"));
    console.log(date.getDate());//day in month
    console.log(date.getDay());//day in week
    console.log(date.getFullYear());
    console.log(date.getHours());
    console.log(date.getMinutes());
    console.log(date.getSeconds());
    console.log(date.getMilliseconds());
    console.log(date.getMonth());
    console.log(date.getTime());
    console.log(date.toDateString());
    console.log(date.toJSON());
    console.log(date.toString());
    console.log(date.valueOf());
    View Code
    • RegExp
    //. anyword; d 0-9; D ^[0-9]; w [A-Za-z0-9_]; W ^[A-Za-z0-9_]; s space
    //xff 十六进制; uabcd Unicode abcd
    var re = new RegExp('JS*','ig');//i ignore case, g global, m multilines
    var str = "cfdjJS *(&YJSjs 888jS)";
    var resultArr = re.exec(str);
    console.log(str+"<br/>");
    while(resultArr){
        console.log(resultArr[0]);
        console.log("next match starts at "+re.lastIndex+"<br/>");
        resultArr = re.exec(str);
    }
    console.log("================");
    var reg = /:D*sd+sd+/;//等同于/[^0-9]*s[0=9]+s[0-9]+/,且^$可表示头尾
    var reg2 = /whiw/;
    var str1 = "this is a date: May 11 2019";
    var resultString = str1.match(reg);
    var replacedStr = str1.replace(reg2,"that");
    console.log("Date"+resultString+"<br/>");
    console.log(replacedStr+"<br/>");
    //exchange words
    var rgExp = /(w*)-*(w*)/;//w = [A-Za-z0-9_]
    var str2 = "Java---script";
    var resultString1 = str2.replace(rgExp,"$2-$1");
    console.log(resultString1+"<br/>");
    View Code
    • Object
    /*Catalina
    15
    teaching...
    relaxing...
    Student1,name:linda,age:2
    Stu1,Stu2,name:linda,age:2
    student,name:linda,age:2
    get function
    Lucy
    set function
    get function
    June*/
    var teacher = {
        name:"Catalina",
        age:5,
        teaching:function(){
            console.log("teaching...");
        },
        relaxing:function(){
            console.log("relaxing...");
        },
        display:function(owner){
            console.log(owner+",name:"+this.name+",age:"+this.age);
        }
    };
    console.log(teacher.name);
    teacher.age = 15;
    console.log(teacher["age"]);
    teacher.teaching();
    teacher["relaxing"]();
    
    var student = {
        name:"linda",
        age:2
    }
    teacher.display.apply(student,["Student1","Student2"]);//(object,[params])
    teacher.display.call(student,["Stu1","Stu2"]);
    var studentDisplay = teacher.display.bind(student,"student");
    studentDisplay();
    
    var stud = new Object();
    stud.name = "Lucy";
    stud.age = 20;
    stud.learning = function(){
        console.log("learning...");
    }
    var myName = "Lucy";
    Object.defineProperty(stud,"name",{
        configurable:true,
        enumerable:true,
        //these two settings cannot go with get and set
        //writable:true,
        //value:"July"
        get:function(){
            console.log("get function");
            return myName;
        },
        set:function(value){
            console.log("set function");
            myName = value;
        }
    });
    console.log(stud.name);
    stud.name = "June";
    console.log(stud.name);
    Object.defineProperties(teacher,{
        "name":{
            value:"Nancy",
            writable:false
        },
        "age":{
            value:11,
            writable:false
        }
    });
    View Code

    JS没有继承机制,但可以用多种方式模拟

    //animate class with factory pattern
    function TeacherFactory(name, age, subject) {
        var obj = {};
        obj.name = name;
        obj.age = age;
        obj.subject = subject;
        obj.teaching = function() {
            console.log("I am " + this.name + ", age " + this.age + ", teach " + this.subject);
        }
        return obj;
    }
    var Lucy = TeacherFactory("Lucy", "24", "swift");
    Lucy.teaching();
    
    //animate class with constructor
    function TeacherConstructor(name, age, subject) {
        this.name = name;
        this.age = age;
        this.subject = subject;
        this.teaching = function() {
            console.log("I am " + this.name + ", age " + this.age + ", teach " + this.subject);
        }
    }
    var lucyy = new TeacherConstructor("Lucyy", "23", "swifttt");
    lucyy.teaching();
    
    //Object.create
    var ATeacher = {
        name: "aHa",
        age: 20,
        subject: "swift",
        teaching: function() {
            console.log("I am " + this.name + ", age " + this.age + ", teach " + this.subject);
        }
    }
    var aHa = Object.create(ATeacher);
    aHa.teaching();
    //prototype
    function People() {
        this.sayHi = function() {
            console.log("Hello,I am " + this.name + ", age " + this.age + ".");
        }
    }
    
    function Teacher(name, age, subject) {
        this.name = name;
        this.age = age;
        this.subject = subject;
    }
    Teacher.prototype = new People();
    var jaki = new Teacher("jaki", 21, "swift");
    jaki.sayHi();
    View Code

    以上为js基础笔记,温故而知新

  • 相关阅读:
    dotnet命令(一)
    Vue两种组件类型介绍:递归组件和动态组件
    vue computed计算属性和watch监听属性解疑答惑
    页面加载完成后加载多个函数的js完美解决方案
    js 获取样式兼容方法
    带回调函数的js运动框架
    使用ajax预加载图片
    css居中解决方案
    图片自适应屏幕解决方案
    js 监听输入框输入事件兼容ie7
  • 原文地址:https://www.cnblogs.com/carbo-T/p/10288841.html
Copyright © 2020-2023  润新知