zoukankan      html  css  js  c++  java
  • [JS] javascript基础语法

     W3CSchool全套Web开发手册:点击下载

    1.javascript是什么

      js是具有面向对象能力的,解释性的程序设计语言.

    2.js的类型

      [基本类型]:string number boolean

      [复合类型]:对象(对象,函数,数组)

      [无类型]:null undefiend

    3.typeof

      语法:string typeof (变量名)  或者  string typeof 变量名

      作用:返回这个变量的类型

    4.块级作用域

      js没有块级作用域的概念.if while等内声明的变量都是和外面声明的变量是同一作用域的.

    5.运算符

      ==和!=:是判断2个结果是否相等

      in:属性是否属于某个对象

      instanceof:变量是否属于某个类    add instanceof Function

    6.数字类型

      js中的数字类型都是浮点数.1===1.00

      8进制:0开头  16进制:0x开头

      

    7.NaN  Infinity  IsNaN  IsFinite

      NaN:Not a Number    alert(0/0)

      Infinity:无限的       alert(0.1/0)

      boolean IsNaN(number):  判断不是数字

      boolean IsFinite(number):  判断数字是不是有限的

    8.string类型方法

      string substring(startindex,endindex):左边取的到,右边取不到

      string substr(startindex,length):

      

    9.包装类型

      包装类型和基本类型的用法一直,是对基本类型的扩充.

      Number  String  Boolean

    10.函数/匿名函数

      函数是js的灵魂,匿名函数就是将函数赋给一个变量.

      函数:function 函数名(参数){方法体}

      匿名函数:var 变量名 = function(参数){方法体}

    11.变量名提升/函数名提升

      函数中是局部作用域,在局部作用域内使用var声明的变量都会隐式的前置.

      如:

      var i = 1;

      function test(){

        alert(i);

        var i = 2;            //此处声明的i相当于在局部作用域最上面声明的.所以alert(i)的i为undefined.

        alert(i);

      }

      var func = function(){return 1};

      function test(){

        func();

        var func = function(){return 2};  //此处和上例相同,因为是函数调用的原因.此处会直接报错.执行不下去.

        func();

      }

    12.动态函数

      new Function(arg1,arg2...argN,body):会创建一个函数并返回.

    13.arguments

      函数的内部会有一个默认的arguments对象,不是数组.

      typeof arguments = Object. arguments instanceof Array = false

    14.创建对象

      在js中没有类的概念,但是函数可以作为构造函数来使用.对象实际就是键值对.

      var Person = function(){

        this.ID = 1;

        this.Name = '2';

      }

      var p1 = new Person();      //创建了一个Person对象,有属性ID和Name

      原理:

        new 关键字:创建一个object对象.将函数内的this指向这个对象.

        构造函数:执行构造函数为this扩展成员.执行完返回this对象.

    15.对象的字面值

      var o = {

        Id:1

        ,Name:'2'

      }

      可以随意的添加成员o.Age = 3;删除成员:delete o.Age;调用成员o['Age']();

    16.数组的创建 

      2种方式创建:

      var arr = new Array()

      var arr = []

      一般给数组赋值都是:

      arr[arr.length] = value;  

    17.null undefined

      null表示空,没有引用对象.

      undefined表示未定义,不存在.有3种情况:

        a.未定义的属性

        b.未定义的变量

        c.返回只有return

      

    18.Error

      相当于C#中的Exception对象

      在js中 throw new Error('此处有错误');

      常用:throw {msg:'异常',date:new Date()}

    19.常用函数

      编码函数:

        encodeURI:对字符串编码,让中文可以再网络中正常传输        推荐使用

        decodeURI:对字符串解码.                     推荐使用

        escape:编码  unescape:解码    编码成16进制.

    20.扩展方法

      扩展方法的本质就是继承.

      构造函数都有prototype(原型)属性.通过构造函数new的对象实际都是派生自prototype.

      注意:所有的函数都继承自Function.间接继承Object.

      Function.prototype.say = function(){                    //给所有函数扩展了一个say方法.

        alert('每个函数都能调用');                        //函数都派生自Function的prototype属性

      }

      var func = function(){}; func.say();

      

    21.继承                              重点

      (var obj = new Object();  var str = new String();  var func = new Function();      所以Object,String,Function都为构造函数.)

      //继承方式1:

      Object.prototype.jc = function(objBase){

        var F = function(){};

        F.prototype = objBase;

        return new F();

      }

      //继承方式2:

      Object.prototype.jc = function(objBase){

        this.prototype = objBase;

      }

      var F = function(){};

      F.jc(objBase);

      var func = new F();

      //继承方式3:(多继承)

      Object.prototype.jc = function () {
        var arr = arguments;
        for (var i = 0; i < arr.length; i++) {
          for (var k in arr[i]) {
            this.prototype[k] = arr[i][k];
          }
        }
      };

      var F = function(){};

      F.jc({id:1},{age:2},{say:function(){

        alert(this.id + ":"+ this.age);

      }})

      var fu = new F();

      fu.say();

       

    22.闭包

      闭包就是 将高级作用域内的变量提供给低级作用域访问.

      var P = function () {

        var i = 1;

        return function(){

          alert(i);

        }

      };

      var p = new P();  p();    最外面的p能调用P函数里面的i;

      

    23.函数

      函数在js中有4种身份

      [函数]:var func = function(){};                              //函数与方法的区别主要在函数内this指的是什么.

      [方法]:var o = {}; o.say = function(){};

      [构造函数]:var P = function(){}; var o = new P();

      [apply|call]:函数名.apply(对象,[参数数组])  函数名.call(对象,参数列表);

    24.DOM

      DOM操作就是js操作html标签.

      DOM操作:

        创建节点:Element document.createElement(tagName)

        获得节点:

            根据id,className,tagName  Element document.getElementByXX(XXValue)

            获得子节点:

                父节点.childNodes
                父节点.firstChild
                父节点.lastChild

            获得兄弟节点:

                当前节点.nextSibling

        添加节点:

            父节点.appendChild()

        删除节点

            父节点.removeChild()

        设置节点属性

            DOM.setAttribute('属性名','属性值')

            DOM.getAttribute('属性名')

            常用属性:nodeName(大写标签名),nodeType(1标签 2属性 3文本),nodeValue(文本节点的文本)

        设置节点文本

            元素节点.innerText

            文本节点.nodeValue

            input节点.value

       

      DOM树:注意的是文本节点是一个单独的节点.

    25.setTimeout,setInterval本质还是单线程的.js是以事件方式驱动的

      

    26.js压缩:

      

    方式一:

      javascript compressor  在线压缩工具

      地址:http://dean.edwards.name/packer/

    方式二:

      JSA  压缩,混淆,分析的工具

      下载地址:

    方式三:

      closure compiler 谷歌的js优化器.非常智能.

      下载地址:

      

  • 相关阅读:
    MYSQL批量插入数据库实现语句性能分析【转】 批量插入!程序里面对于数据库插入的功能尽量用【异步处理+批量插入+(事务)】
    移动端如何解决页面返回上次浏览位置问题
    php对接java接口
    php后端遇到的问题
    jquery 判断字符串长度
    phpExcel常用方法详解
    html 手机端适配不同手机高度 ,把内容居中显示
    html 手机端 生成海报
    没错,老师就是个勤奋负责有良心的职业,不,的人
    睡眠是自然的第二道菜
  • 原文地址:https://www.cnblogs.com/neverc/p/4401883.html
Copyright © 2011-2022 走看看