js总结

JavaScript基本组成

1.基本语法(浏览器基本都支持,有统一标准)

2.Dom(文档对象模型)(基本都支持,但可能会有差别,有统一标准)

3.Bom(浏览器对象,一般功能浏览器支持,但没有统一的标准)控制浏览器可见区域以外的部分(打开新窗口、关闭浏览器窗口、获取分辨率screenXmlHttpRequest等。)

核心的JavaScript由以下3部分组成:

ECMAScript(基本语法)   语法、类型、关键字、保留字、语句、运算符、对象

Dom文档对象模型(封装好的一些函数库)   在htmlxml中都是用dom   Xmlhtml的应用程序接口(api)

Bom浏览器对象模型     XMLHttpRequest、ActiveXObject对象等。浏览器特有的。

JavaScript基本语法
JavaScript 严格区分大小写
弱类型 , 声明变量用 var ( 无论什么类型变量都用 var 声明 )
每条语句后加分号。(不是必须,但建议加上。)
字符串使用单引号 abc ’,或者双引号"abc"

<a href=“javascript:js代码">热门文章</a>只有超链接的href中的JavaScript中才需要加“javascript:”
因为它不是事件 ,而是把” javascript :” 看成像“ http:” 、“ ftp:” 、“ thunder://” 、“ ed2k://” 、“ mailto:” 一样的 网络协议 ,交由 js 解析引擎处理。只有 href 中这是这是一个特例。

超链接为“死链”时,使用 # javascript:void (0); 的区别

使用#,超链接访问自己本页面,而javascript:void(0);是计算括弧里的表达式无返回值

JavaScript数据类型

Boolean (布尔)、 Number (数字)、 String (字符串)、 Undefined (未定义)、 Null (空对象)、 Object (对象类型)
除了 Object 是引用类型以外,其他都是基本数据类型
Undefined 类型、 Null 类型都是只有一个值的数据类型,分别为 undefined null.
基本类型与引用类型的区别
String 也是基本类型,不能为 String 添加动态属性,而引用类型是可以的。

1. undefined, 表示一个 未知状态
    声明了但是没有初始化的该变量,变量的值是一个未知状态 (undefined) 。 (访问不存在的属性或对象 window.xxx
   方法没有明确返回值时,返回值是一个 undefined.
   当对未声明的变量应用 typeof 运算符时,显示为 undefined (*)

2. null 表示尚未存在的对象 ,null 是一个有特殊意义的值。可以为变量赋值为 null ,此时变量的值为“ 已知状态 ( 不是 undefined) ,即 null 。(用来初始化变量,清除变量内容,释放内存)

undefined==null   // 结果为 true, 但含义不同
undefined===null//false(*),先判断类型是否一致,然后判断值

JavaScript 中判断已声明变量、参数是否初始化 ( 可用 ) 的方法:
假设已有变量 x
if ( typeof (x)!=‘undefined’ && x!=null) {    alert(" 可用 ");    }
if(x){ alert(‘ 变量可用!’ );} else { alert(‘ 变量不可用!’ );} //null undefined ’’ 0 都认为是 false
x 声明但没有赋值,或 x null ,或 x 0 时,都表示不可用! //if(x), 返回 false
推荐用最后一种方法。但如果 x 有可能没有声明,则只能用 typeof 判断(否则会报错)。
JavaScript变量作用域
默认如果直接在 script 标签中定义变量,则属于“全局作用域范围” ( 全局执行环境 ) ,即属于 window 对象。
全局作用域范围的变量直到网页关闭或浏览器关闭时才释放资源
一个页面中的多个 <script> 标签中的变量可以互相访问
JS 有垃圾回收机制,会定时对可释放资源的变量回收。将变量设置为 null 则表示可以被回收了。
如果在某个函数内定义了变量则作用域范围属于该函数。注意声明变量时使用 var 与不使用 var 的区别

Switch case 相当与全等于  ===

类型转换

  parseInt(arg)//将指定的字符串,转换成整数

 parseFloat(arg)//将指定的字符串,转换成浮点数

 Number(arg)把给定的值(任意类型)转换成数字(可以是整数或浮点数);转换的是整个值,而不是部分值。如果该字符串不能完全转换为整型,则返回NaN。(Not a Number)

  isNaN(arg)//判断arg是否为一个非数字(NaN),NaN与NaN也不相等。

 String(arg)把给定的值(任意类型)转换成字符串;

  Boolean(arg)把给定的值(任意类型)转换成Boolean 型;

 (*)eval(codeString)//将一段字符串的js代码,计算并执行。类似于动态SQL语句。

   alert(eval(‘2+3’));

   eval(‘alert(100);’);

 

 与调用对象的toString()方法等效。

  特列:当对象为null或undefined时,调用toString()会报错,而String()可以转换成功。

 Example:

  var v = null;  v= String(v); //v的结果是”null”

 var v; v=String(v); //v的结果是”undefined”

 

arguments对象

 动态为方法传递参数,类似于.net中的params关键字作用

 <scripttype="text/javascript">

           function myFunc() {

              for (var i = 0; i < arguments.length; i++) {

                  document.write(arguments[i]);

                    document.write('<br/>');

              }

      }

            myFunc('张三', 18, '李四', 19);

      </script>

 

JS面向对象基础

  函数就是对象,对象就是函数。

  方法直接调用为函数,用new调用为对象。

   JavaScript中没有类的语法,是用函数闭包(closure)模拟出来的,下面讲解的时候还是用C#中的类、构造函数的概念,JavaScript中String、Date等“类”都被叫做“对象”,挺怪,方便初学者理解,不严谨。JavaScript中声明类(类不是类,是对象)。

Example(写一个Person对象):

    function Person()  {   }  //ok,就这么简单。

如何使用Perosn对象?

   var p=new Person();// “var p” 不是   “Person p”。

    p.Name=‘张三’;//动态语言,所以可以直接写。

   p.Age=30;

  p.SayHello=function() { alert(‘Hi~’); }

    alert(p.Name);

   alert(p[‘Age’]);//另外一种动态访问属性的方式。

 

JS面向对象基础2

 JavaScript同样支持this关键字

 构建一个带参数的Person对象。通过this关键字为对象的属性赋值。

   function Person(name, age) {

                this.Name = name;

              this.Age = age;

              this.ShowInfo = function() {

                alert('大家好,我叫' + this.Name + ',今年' + this.Age+ '岁了。');     }}

   var zjl = new Person('周杰伦', 20);

    zjl.ShowInfo();

  function Person(name,age)可以看做是声明构造函数,Name、Age这些属性也是使用者动态添加了。【var p1 = Person(“周杰伦", 20);//不要丢了new,否则就变成调用函数了,p1为undefined。】new 相当于创建了函数的一个实例。

 

String对象

  length属性:获取字符串的字符个数。(无论中文字符还是英文字符都算1个字符。)

  charAt(index)方法:获取指定索引位置的字符。(索引从0开始)

  indexOf(‘字符串’,startIndex)方法:获取指定字符串第一次出现的位置。startIndex表示从第几个开始搜索。

  split(‘分隔符’,limit);//根据分隔符将一个字符串返回为一个数组。limit表示要返回的数组的最大长度(可自定义)。多个分隔符使用正则表达式:var msg = 'a★b★c☆d☆e#f';var vals = msg.split(/☆|★|#/);alert(vals);

  substr(startIndex,len)//从startIndex开始,截取len个字符。

  substring(startIndex,stopIndex)//从startIndex开始,截取到stopIndex位置(不包括stopIndex所在的字符)。

 toUpperCase()//转换大写、toLowerCase();//转换小写

  match()、replace()、search()方法,正则表达式相关

 

Array对象

  JavaScript中的Array对象就是数组,首先是一个动态数组,而且是一个像C#中数组、ArrayList、Hashtable等的超强综合体。

  数组的使用方式:

•    var names = new Array();//无需初始化长度,动态

•    names[0] = "tom";

•    names[1] = "jerry";

•    names[2] = "lily";

  循环遍历数组(for循环):

•    for (var i = 0; i < names.length; i++) {

•        alert(names[i]);

•    }

 循环遍历数组(forin循环):类似于c#中的foreach.

•    for (var i in names) {

•       alert(names[i]);//如果直接输出i是什么?

•    }

•    使用forin循环可以遍历对象的所有属性。【演示:遍历window对象】

•    for in循环其实遍历的还是key.

  数组的其他几种声明方式:

•    new Array();

•    new Array(size);

•    new Array(element0, element0, ..., elementn);

•    var arr = [‘China’, 2008, true, ‘Hello’];(推荐。)

JS中的Dictionary

  JS中的Array是一个宝贝,不仅是一个数组,还是一个Dictionary,还是一个Stack(栈集合,不能是Dictionary)。

•    var pinyins = new Array();

•    pinyins["人"] = "ren";

•    pinyins["口"] = "kou";

•    pinyins["手"] = "shou";

•    alert(pinyins["人"]);

•    alert(pinyins.人);

 字典风格的简化创建方式:

•    var arr = {“人”:”ren”,“口”:”kou”};//json格式。

像Hashtable、Dictionary那样用,而且像它们一样效率高。

 不能直接用for循环遍历,需要用forin循环。

Dictionary风格数组的length为0。所以不能用for遍历

扩展方法

  通过类对象的prototype设置扩展方法,下面为String对象增加quote(两边加字符)方法

         String.prototype.quote= function(quotestr) {

             if (!quotestr) {

                quotestr ="\"";

          }

             return quotestr +this + quotestr;

        };

         alert("abc".quote());       alert("abc".quote("|"));

扩展方法的声明要在使用扩展方法之前执行。JS的函数没有专门的函数默认值的语法,但是可以不给参数传值,不传值的参数值就是undefined,自己做判断来给默认值。

 




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值