JavaScript高级编程笔记(1)

1、JavaScript是什么?

  JavaScript实现由以下3个不同部分组成:
  1、核心(ECMAScript) 2、文档对象模型(DOM) 3、浏览器对象模型(BOM)

  ECMAScript -- 并不与任何具体浏览器相绑定,为不同种类的宿主环境提供核心的脚本编程能力
  WEB浏览器对于ECMAScript来说是一个宿主环境,但并不是唯一的宿主环境。例如flash中的ActionScript可以容纳ECMAScript实现。

  ECMAScript主要内容:
  语法、类型、语句、关键字、保留字、运算符、对象、
 
  ECMAScript仅仅是一个描述,定义了脚本语言的所有属性、方法和对象。 

  DOM -- 是HTML和XML的应用程序接口(API).
  DOM 将整个页面规划成由节点层级构成的文档。 

  BOM -- 主要处理浏览器窗口和框架。

-------------------------------------
2、ECMAScript基础

  1、语法  
  区分大小写,
  变量是弱类型、
  每行结尾的分号可有可无、
  注释与Java,C,PHP语言相同 (// /* */)
 
  5 原始值和引用值
  在ECMAScript中,变量可存放两种类型的值,原始值和引用值。
  原始值(primitive value) 是存储在栈(stack)中的简单数据段,直接存储在变量可访问的位置。
  引用 值(reference value)是存储在堆(heap)中的对象,存储一个指针。

  6 原始类型
    ECMAScript有5种原始类型 -- Undefined,Null,Boolean,Number,String
    每种原始类型定义了它包含的值范围及字面量表示形式。
    ECMAScript提供了tpyeof运算符来判断一个值是否存在某种类型的范围内,判断一个值是否有原始类型。
 
  6.1 typeof运算符
     var sTemp = "test string";
     alert(typeof sTemp);  --检查变量类型
  6.2 Undefined类型 -- 未初始化的变量
  6.3 Null类型
  
  7 转换
   toString(),parseInt(),parseFloat(),
   强制类型转换
    Boolean(value) -- 非0数字或对象时,返回true;
    Number(value)  --
    string(value)  --

  8 引用类型 -- Object类,Boolean类,Number类,String类,instanceof运算符
    在使用typeof运算符时采用引用类型存储值会出现一个问题,无论引用的是什么类型的对象,它都返回"object",ECMAScript引入另一个Java运算符instanceof来解决这个问题。
    var temp = new String("test string");
    alert(temp instanceof String);  --返回true  
    
  10 语句
   break -- 立即退出循环,continue -- 只退出当前循环。

  ECMAScript 中的函数不能重载。


-----------------------------------
3、对象基础

  对象的类型:
  1、本地对象  -- 独立于宿主环境的ECMAScript实现提供的对象。
  Object,Function,Array,String,Boolean,Number,Date,RegExp,Error
  EvalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError

  Array类: -- var temp = new Array(20); temp[0] = "red";

  2、内置对象  -- Global和Math
  eval()方法 -- 整个ECNAScript语言中最强大的方法,该方法接受一个参数,即要执行的字符串
  eval("alert('hi')");

 
----------------------------
5、浏览器中的JavaScript

  BOM(浏览器对象模型),它提供了独立于内容而浏览器窗口进行交互的对象。
 
  window对象表示整个浏览器窗口,但不必表示其中包含的内容。
  如果页面使用框架集合,每个框架都有它自己的window对象表示,存放在frames集合中。

  访问Window对象的name属性,它存储的是框架的名字。
 
   self一个更加全局化的窗口指针,它总是等于window。如果页面没有框架,window和self就等于top,frames集合的长度为0。

   1、窗口操作
   moveBy(dx,dy) -- 把浏览器窗口水平,垂直移动
   moveTo(x,y)   -- 移动浏览器窗口
   resizeBy(dw,dh) -- 相对于浏览器窗口的当前大小。
   resizeTo(w,h)   -- 把窗口的宽度调整为w,高度调整为h,不能使用负数。

   IE提供了 window.screenLeft和window.screenTop对象来判断窗口的位置。
   Mozila提供了window.screenX和window.screenY属性来判断窗口的位置。

   建议尽量少用移动窗口的功能。

   2、导航和打开新窗口
    window.open()方法打开新窗口。
    window.open("http://sina.com","newFrame");
   
   3、对话框
    除弹出新窗口,还可使用其它方法向用户弹出信息,利用window对象的alert(),confirm(),prompt()方法。
    alert("hello") -- 接受一个参数,即要显示给用户的信息。 只有OK按钮
    confirm("Are you sure?")  -- 有OK和取消按钮。点OK返回true。
    prompt() -- 提示用户输入信息。

   4、状态栏   -- 是底部边界内的区域,用于向用户显示信息。
    可用window对象的两个属性设置它的值,即status和defaultStatus属性。
    window.defaultStatus = "You are surfing";
 
   5、时间间隔和暂停
    用window对象的setTimeout()方法设置暂停。
 setTimeout("alert("hello")",1000);
    在调用setTimeout()时,它创建一个数字暂停ID,可调用clearTimeout()暂停ID。

   6、历史
    可访问浏览器窗口的历史,用户访问过的站点列表。
    go()方法只有一个参数,即前进或后退的页面数。负数为后退。
    window.history.go(-1);   --后退一页。

  document对象:  -- window对象的属性,
   这个对象的独特之处是它是唯一一个既属于BOM又属于DOM的对象 。
  
  location对象: -- 表示载入窗口的URL,是BOM中最有用的对象之一。
    它是window对象和document对象的属性。
 
   location.reload()方法,可重新载入当前页面。
   location.reload(true) --从服务器载入当前页面。
   location.reload(false) --从本地缓存中重载。

 navigator对象: -- 检测浏览器及操作系统信息。

 screen对象: -- 用于获取某些用户屏幕的信息。屏幕的高度和宽度。

 
----------------------------
6、DOM基础

  DOM是针对XML的基于树的API。
  DOM是语言无关的,它的实现并不与javaScript或其它语言绑定。
  使用DOM:
  1、访问相关的节点:
  var temp = document.documentElement;
  2、检测节点类型:
 document.notetype,
  3、处理特性
     getNamedItem(name) -- 返回nodeName 属性值等于name的节点。
     removeNamedItem(name) -- 删除节点。
     setNamedItem(node) -- 将node添加到列表中。
     item(pos) -- 返回pos位置的节点。

  4、访问指定节点:
     getElementsByTagName() -- 返回一个包含所有标签名的集合。
     var temp = getElementsByTagName("img");

     getElementsByName() -- 用来获取所有name特性等于值的元素。
     getElementsById()  -- 返回id我等于指定值的元素。
 

创建和操作节点:
   1、创建新节点:
     createDocumentFragment(),createElement(),createTextNode();
     例:要使用DOM来添加下面代码到页面中。
     <p>hello</p>
      第一步 创建<p/>元素
        var oP = document.createElement("p");
      第二步 创建文本节点:
        var oText = document.createTextNode("hello");
      第三步 将文本节点添加到元素中
        oP.appendChild(oText);
      现在已创建一个<p>元素和一个文本节点,并将它们关联在一起,但必须将这个元素附加到document.body元素或其中任意子节点上。
        document.body.appendChild(oP); 

     removeChild() --删除节点
     replaceChild() -- 替换一个节点
     insertBefore() -- 让新消息出现在旧消息之前。

遍历DOM
  NodeIterator对象: 使用document对象的createNodeIterator()方法。
  有四个参数:  1、root 从树中那个节点开始搜索
  2、whatToShow 那些节点需要访问
  3、filter -- NodeFilter对象,用来过滤那些节点。
  4、entityReferenceExpansion --布尔值,表示是否需要扩展实体引用。
 
   var iterator = document.createNodeIterator(document,NodeFilder.SHOW_ALL,NULL,FALSE)
   iterator.nextNode() --向前搜索
   iterator.previousNode() --向后搜索。

  
  TreeWalker对象: --包含NodeIterator对象所有功能,添加了一些遍历方法。
    parentNode() -- 进入当前节点的父节点
    firstChild() -- 进入当前节点的第一个子节点
    lastChild()  -- 进入当前节点的最后子节点
    nextSibling()-- 进入当前节点的下一个兄弟节点
    previousSibling() -- 进入当前节点的前一个兄弟节点  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值