• JavaScript-基础


    Date 

     date.toString()  获取世界时间,会提示当前时区

    var data = new Date();
    alert(date.toString());

      date.toLocaleString()  获取当前时区的当前时间

    超链接不跳转

    一、让js函数返回false,在click也返回false

    function hi(){
      alert("你好")  ;
      return false;  
    }
    <a href="http://www.baidu.com" onclick="return hi();">打招呼</a>

    二、将href指定成一段脚本

    <a href="javascript:hi();">打招呼</a>

    数据类型

    boolean      布尔

    number    数字

    string     字符串

    Undefined     未定义

    Null           空对象

    Object       对象类型

    Undefined类型、Null类型都是只有一个值的数据类型,值分别为undefined与null

    null是一个object的值

    查看变量的类型typeof  变量名或typeof(变量名),返回变量类型的字符串

    //返回的是function
    alert(typeof(date))
    //返回的是string
    alert(typeof(date()))//调用方法返回字符串

    类型转换:类型名(变量名)或parse***(变量名)

    //当变量被声明后,没有初始化,值为undefined

    判等

    双等号==判断值是否相等

    三等号===先判断类型是否相同,再判断值是否相等

    undefined==null  true

    undefined===null  false

    123==“123”    true

    123===“123”    false

    如何判断变量是否可用?

      先判断类型是否为undefined,再判断值是否为null,否则可用

    isNan()  非数字判断

    alert(isNaN('123'))    //false 能转成数字的都是false
    alert(isNaN('abc'))

    eval()  将一段字符串当做js代码执行

    应用场景:当从文本框中获取值时,得到的是字符串,希望那段字符串当做js执行,则使用eval()

    eval('alert("abc")')

    方法

      使用关键字arguments获取所以的参数,是一个数组

    //可变参数
    function sum(){
      var res=0;
      for(var i=0;i<arguments.length;i++)    {
          res+=argument[i];
      }
    }
    sum(1,2,3,4,5);

      js不支持方法重载,如果方法重名,后写的函数会把之前的覆盖掉

    匿名函数

    一、可以将方法赋值给一个变量,这个变量表示一个方法

    var fn = function(a,b){alert(a+b);};
    //调用
    fn(1,2);

    二、定义时完成调用

    (function(){})()

    三、赋值给一个变量完成调用

    new Function("a","b","return a+b");

    闭包(主要作用是类的定义)

      支持在函数内部调用函数之前声明过的变量

      作用域链:变量的作用域在当前函数中,及当前函数内部定义的函数中,形成了一个链条(缺点:会让变量的值在内存中长期存放,无法释放,尽量避免闭包的发生)

    //定义一个函数say
                function say(name){
                    //返回一个函数
                    return function(){
                        //输出name的值
                        alert("我是"+name)
                    }
                }
                //调用say函数,将返回值赋值给fn
                var fn = say("小明");
                //调用fn
                fn();

    window.onload=function(){
                    var btn = document.getElementsByName("happy");
                    for(var i=0;i<btn.length;i++){
                        //逐个为按钮注册点击事件
                        btn[i].onclick=function(){
                            //正确写法
                            //this.value="noHappy";
                            //错误原因,i的闭包,当调用此方法时,由于该方法没有i,所以去外层方法寻找,但由于当时已经循环完,所以i为7,也就是说,不管点击哪个按钮,执行的都是第8个(也就是i为7)按钮的事件
                            document.getElementById(i).value="noHappy";
                        }
                    }
                }

    <input type="button" name="happy" id="0" value="happy"/>
    <input type="button" name="happy" id="1" value="happy"/>
    <input type="button" name="happy" id="2" value="happy"/>
    <input type="button" name="happy" id="3" value="happy"/>
    <input type="button" name="happy" id="4" value="happy"/>
    <input type="button" name="happy" id="5" value="happy"/>
    <input type="button" name="happy" id="6" value="happy"/>
    <input type="button" name="happy" id="7" value="happy"/>

    模拟面向对象

    //第一种方式
                //为类增加成员
                function Person(gender){
                    //在类内部声明一个Gender属性,初始化为gender值
                    this.Gender=gender;
                    this.say=function(){
                        alert("我是"+this.Gender+"的");
                    }
                }
                //使用构造方法创建对象
                var women=new Person("女");
                //调用方法
                person.say();
                alert(typeof(women));//object
                alert(typeof(Person("女")));//undefined,因为Person作为函数时,没有返回值,所以是undefined
                alert(typeof(Person));//function,Person就是一个函数,类型是function
    //第二种方式
                //为对象增加属性
                function Person(){}
                var p=new Person();
                p.Name="小明";//为对象p新增了一个Name属性
                p.say=function(){
                    alert(p.Name);
                }
                p.say();
                //新建的对象,是没有Name属性的,因为类Person中没有Name属性
                var p1=new Person();
                alert(p1.Name)

    原型

    //原型:对象的类型
                function Person(){
                    this.Age=18;
                }
                var p = new Person();
                //访问原型,为原型注册数据成员,下面两种结果一样
                p.__proto__.Name="小红";//两个下划线
                Person.prototype.Name="小紫";

    集合

    //使用[]定义数组
                var arr=[1,'a',"小明"];
                arr[0]
                //键值对{键:值}
                var arr2={name:"小明",age:18,gender:'男'};
                arr2["name"]//将arr2认为是集合,通过键访问值
                arr2.name//将arr2任务是json,通过属性访问值
    //定义json数组
                var temp=[{
                    name:"小明",
                    age:17
                },{
                    name:"小红",
                    age:18
                },{
                    name:"小紫",
                    age:18
                }];
    //输出对象的name
                for(var item in temp){
                    alert(temp[item].name)//temp[item]["name"]与前面结果相同
                }
  • 相关阅读:
    js上移、下移排序 效果
    如何为平板打造完美的网站页面?
    [BUUOJ]刮开有奖reverse
    [0CTF 2016]piapiapia
    [TSCTFJ 2019]bypass
    [安洵杯 2019]easy_serialize_php
    [TSCTFJ] relax
    c#访问网页
    DNN 数据访问
    c#访问数据库
  • 原文地址:https://www.cnblogs.com/xiaonangua/p/7391133.html
Copyright © 2020-2023  润新知