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优化器.非常智能.

  下载地址:

  

[JS] javascript基础语法的更多相关文章

  1. javascript基础语法——词法结构

    × 目录 [1]java [2]定义 [3]大小写[4]保留字[5]注释[6]空白[7]分号 前面的话 javascript是一门简单的语言,也是一门复杂的语言.说它简单,是因为学会使用它只需片刻功夫 ...

  2. Unit04: JavaScript 概述 、 JavaScript 基础语法 、 流程控制

    Unit04: JavaScript 概述 . JavaScript 基础语法 . 流程控制 my.js function f3() { alert("唐胜伟"); } demo1 ...

  3. javascript基础语法——表达式

    × 目录 [1]原始表达式 [2]复杂表达式 前面的话 一般地,关于javascript基础语法,人们听得比较多的术语是操作符和语句.但是,其实还有一个术语经常使用,却很少被提到,这就是javascr ...

  4. javascript基础语法备忘录-变量和数据类型

    //javascript基础语法备忘录-变量和数据类型 // 定义变量使用var关键字 后面跟变量名,不要使用eval 和arguments为变量名 var message = "hi&qu ...

  5. JavaScript基础语法资料

    JavaScript基础第01天 1 - 编程语言 1.1 编程 编程: 就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程. 计算机程序: 就是计算机所执行的一系列的 ...

  6. Nice!JavaScript基础语法知识都在这儿了

    好好学习,天天向上 本文已收录至我的Github仓库DayDayUP:github.com/RobodLee/DayDayUP,欢迎Star 转载请注明出处! 链接:https://blog.csdn ...

  7. 2021年3月-第03阶段-前端基础-JavaScript基础语法-JavaScript基础第01天

    1 - 编程语言 1.1 编程 编程: 就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程. 计算机程序: 就是计算机所执行的一系列的指令集合,而程序全部都是用我们所掌 ...

  8. JavaScript 基础语法

    1 谈谈 JavaScript JavaScript,通常会简称为'JS', 是一种浏览器脚本语言 1.1 JavaScript 编程语言特点 JavaScript是一种脚本编程语言 JavaScri ...

  9. javaScript基础语法(上)

    相关理论概念: 直接量的概念:直接描述某个(些)存储空间的值的量,如变量的值.对象的值.数组的值. 数据类型:在数据结构中的定义是一个值的集合以及定义在这个值集上的一组操作. 1.变量的声明和使用 变 ...

随机推荐

  1. db2 表授权语句

    grant insert/update/delete on table schema.table_name to user user_name;

  2. Enclosure POJ

    0:Enclosure http://poj.openjudge.cn/challenge3/0/ 查看 提交 统计 提问 总时间限制:  1000ms 内存限制:  131072kB 描述 为了防止 ...

  3. 开源Launcher - Wox 出炉了

    Wox 是一款免费开源的信息快速获取软件.她的创作灵感来自于Mac上Alfred和Window上的Launchy. 目前Wox托管在Github (http://www.github.com/qian ...

  4. myeclipse9或myeclipse10安装svn的方法

    下载最新的SVN包   site-1.6.5.zip 从中解压出features与plugins文件夹,复制到C:\toBeInstalledSVN 里面,其它的*.xml文件不要 复制下列java代 ...

  5. 在 Visual Studio 中打开编辑 cshtml 文件时出现错误:未能完成该操作 无效指针 的解决方法

    第一步:关闭 Visual Studio: 第二步:删除 %LocalAppData%\Microsoft\VisualStudio\14.0\ComponentModelCache 下的所有文件: ...

  6. SAP S4 Finance6个支持企业实时财务管理的主要创新领域

    本文将讲述下 SAP Simple Finance里面6个支持企业实时财务管理的主要创新领域. Simple Finance 在以下几个方面具有自己独特的优势: ● 更加简洁的用户体验,可以让用户在任 ...

  7. Amazon的Fire Phone之于Android开发者

    在上周Amazon也耐不住加入了手机竞争行列之中,发布了自己的Fire Phone,于是Android家族又多了一位变种成员,Android系统的碎片化程度也进一步加剧.因为工作的关系,我有幸在上个月 ...

  8. ora-01031:insufficient privileges解决方法 - 转

    今天晚上要远程修改一个分公司的数据库参数,于是下午先远程过去做些准备工作.数据库是oracle 11g rac,操作系统是windows 2008 server,我还是第一次见过windows下的or ...

  9. oracle数据库的字符集更改

    A.oracle server 端 字符集查询  select userenv('language') from dual 其中NLS_CHARACTERSET 为server端字符集 NLS_LAN ...

  10. new/delete和malloc/free的区别

    通俗易懂版本:http://zhidao.baidu.com/question/86185100 1 new/delete和malloc/free最大区别是对对象的理解. 如果你使用 Foo* foo ...