zoukankan      html  css  js  c++  java
  • javascript---知识点2

    1、一共分为6种数据类型
    
    Undefined      返回字符串undefined
    
    Boolean        返回字符串boolean
    
    String         返回字符串sring
    
    Number         返回字符串number
    
    Object         返回字符串object,  var a = null;  返回也是object,   null也是Object
    
    Function       返回字符串function
    ---------------------------------------------------------------------------------
    typeof box     返回字符串undefined
    
    2var box;
    typeof box   undefined
    typeof age   一个没有的变量也会返回undefined
    alert(age);  使用一个没有的变量会报错
    尽量都初始化赋值
    
    3、undefined == null    true
       undefined === null    false
    
    
    4、toString()  中不能用null 或undefined
    可以使用 String()  强制转换成string  返回的是'null' 'undefined'    
    
    5、Object
    var a = new Object(); 或  var a = new Object;
    
    6、javascript 中的类型转换  都是由底层默认实现的  不需要手动转换 包括对象
    
    var a = new String("1111");  typeof 返回的是object
    
    
    7、函数名本身就是变量,所以函数也可以作为值来使用
    
    
    function  b(a,numb){
    var c = a(numb);
    return c;
    }
    
    function a(num){
       return num;
    }
    
    var d = b(a,10);
    
    8、函数有两个内部属性
    
    arguments    类似数组的对象,不是数组是对象
    arguments.callee();
    
    this
    
    var color = "全局";
    function a(){
    this.color;    这里的this指向的是动态的  随调用指向谁
    }
    
    
    var a ={
      this.color;   这里的this指向的是a对象
    
    }
    
    9、匿名函数
    (function(){
       return "aaaa";
    })();
    
    var a = (function(){
       return "aaaa";
    })();
    或者
    //赋值给变量可以去掉()
    var a = function(){
       return "aaaa";
    }();
    
    alert(a);  不用加 ()把匿名函数执行后的结果赋给变量a
    
    var a = function(){
       return "aaaa";
    }
    
    alert(a);  会输出整个函数
    
    10、通过闭包访问局部变量,可以把局部变量贮存内存中,可以避免使用全局变量
    
    全局变量累加
    
    var a = 10;
    function add(){
       a++;
    }
    add();
    add();
    add();
    a = 13;
    
    局部变量
    function add(){
       var a = 10;
       a++;
       return a;
    }
    add();
    add();
    add();
    a = 11;
    每次调用方法都会初始化  不能实现一直累加
    
    
    局部变量使用闭包可以
    function add(){
       var a = 100;
       return function(){
          a++;
          return a;
       }
    }
    var b = add();
    b();
    b();
    b();
    相当于对象中的方法
    
    11、循环中匿名函数的取值问题
    function box(){
    var arr =[];
    
    for(var i=0;i<5;i++){
       //把匿名函数循环赋给数组
       arr[i]=function(){
          return i;
       }
       //返回的i都为5   因为循环到最后 i=5
    }
    return arr;
    
    }
    
    
    for(var i=0;i<5;i++){
       //把匿名函数循环赋给数组
       arr[i]=(function(num){
          return num;
       })(i);
       //返回的i都为5   因为循环到最后 i=5
    }
    return arr;
    
    }
    
    
    
    for(var i=0;i<5;i++){
       //把匿名函数循环赋给数组
       arr[i]=(function(num){
          return function(){
              return num;
          }
       })(i);
       //返回的i都为5   因为循环到最后 i=5
    }
    return arr;
    
    }
    
    12、this
    闭包中的this指向window
    
    var user = "window user";
    var box = {
      user:'box user',
      getUser:function(){
         //这里的this指向box
         return function(){
            return this.user;//这里的this指向window
         }
      }
    
    }
    
    //冒充box
    box.getUser().call(box);
    
    13、块级作用域(js中没有块级作用域)
    
    模拟块级作用域
    
    (function(){
    
    
    
    })();
    
    函数中的变量为私有变量,外部不能访问
    function Box(){
       对外公布的公有变量和方法  相当于 public
        this.age =100;
        this.age = function(){
           return "年龄";
        }
        //私有的变量和方法不对外公布  相当于private
        var a = "100";
        function add(){
    
        }
    }
    
    
    function Box(value){
       var user = value;
       this.getUser = function(){
          return user;
       }
    }
    
    var b1 = new Box('aaa');
    b1.getUser()     //aaa
    
    var b2 = new Box('bbb');
    b1.getUser()     //aaa
    
    
    如果要user成为静态变量  多个对象共享的话
    (function(){
       var user = "";
       Box = function(value){   //全局
          user = value;
       }
    
       Box.prototype.getUser = function(){
          return user;
       }
    })();
    
    var b1 = new Box('aaa');
    b1.getUser()     //aaa
    
    var b2 = new Box('bbb');
    b1.getUser()     //bbb
    
    //一般的结构
    var box = function(){
       var user = "aaa";
       function run(){
          return "运行";
       }
    
       var obj = {
          publicMethod:function(){//对外暴露的方法
             return user;
          }
       };
       return obj;
    }();
    
    box.publicMethod()
  • 相关阅读:
    渗透资源大全
    Brute Force(暴力(破解))
    关于Burp Suite不能抓包的解决方法
    新手指南:DVWA-1.9全级别教程之SQL Injection
    mysql里面如何用sql语句让字符串转换为数字
    手把手教你如何搭建自己的渗透测试环境
    php错误提示
    vmware虚拟机三种网络模式详解
    Vmware虚拟机下三种网络模式配置
    cmd开启3389
  • 原文地址:https://www.cnblogs.com/jentary/p/11931203.html
Copyright © 2011-2022 走看看