JavaScript高级编程笔记(1)

原创 2007年09月23日 19:32:00

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() -- 进入当前节点的前一个兄弟节点  

《JavaScript高级程序设计 第三版》学习笔记 (三)引用类型详解

2014.8.28一、引用类型 1.ECMAScript从技术上讲是一门面向对象语言,但它不具备传统的面向对象语言所支持的类和接口等基本结构。js中的对象,是某个特定引用类型的实例。新对象通过new...
  • lbxx1984
  • lbxx1984
  • 2014年08月28日 16:36
  • 778

JavaScript高级程序设计(读书笔记)(一)

JavaScript高级程序设计(JS部分知识汇总)本笔记汇总了作者认为“JavaScript高级程序设计”这本书的前七章知识重点,仅供参考。第一章 JavaScript简介JavaScript发...
  • hc1025808587
  • hc1025808587
  • 2016年05月23日 22:43
  • 9012

Oracle专家高级编程学习笔记( 二)

Oracle体系结构的3个主要组件:1.文件:组成数据库实例的5个文件(参数文件,控制文件,数据文件,临时数据文件,重做日志文件)2.系统全局区域SGA( System Global Area): J...
  • fanyamin
  • fanyamin
  • 2004年12月12日 20:31
  • 1891

Python 高级编程笔记之类别

目录: 子类化内建类型 访问超类中的方法-super 描述符 & 属性 元编程 主要内容:1.子类化内建类型# -*- coding:utf-8 -*- class Folder(list): ...
  • Temanm
  • Temanm
  • 2016年03月16日 14:42
  • 2340

javascript高级程序设计读书笔记——事件总结

第13章 事件 1.1 事件冒泡     事件开始的时候从最具体的元素接收,然后逐级向上传播到较为不具体的节点。 1.2 事件捕获     事件捕获与冒泡相反,首先由不具体的节点接收,最后...
  • yinkaihui
  • yinkaihui
  • 2016年08月16日 00:34
  • 859

《unix环境高级编程》 读书笔记 (1)

近来读书,做些笔记,来年好翻翻。 本文所使用的操作系统为 CentOS7.0,如果不想装双系统的可以装虚拟机,可以参考这里: http://blog.csdn.net/alex_my/arti...
  • alex_my
  • alex_my
  • 2014年09月05日 12:01
  • 2410

《C#高级编程(第7版)》学习笔记

欢迎使用Markdown编辑器写博客 本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: -Markdown和扩展Markdown简洁的语法 - 代码块高...
  • onlytiger1100
  • onlytiger1100
  • 2017年03月10日 09:12
  • 277

Shell高级编程学习笔记(基础篇)

目录 1.shell脚本的执行方法   2.shell的变量类型   3.shell特殊变量 4.变量子串的常用操作   5.批量修改文件名实践    6.变量替换 7.在shell中计算字符串...
  • Erica_1230
  • Erica_1230
  • 2017年05月07日 15:14
  • 736

Windows高级编程学习笔记(一)

写在前面的话 之前学的Windows编程都是界面啊、网络编程啊之类的纯应用层面的东西,总是感觉而自己没有达到自己期望中的水平。什么水平?让你写个监控系统资源的工具,或者DLL注入啊之类的,或者底层安全...
  • u012790503
  • u012790503
  • 2016年08月27日 18:09
  • 363

《JS高级程序设计》——函数#闭包#

函数本身就是一个非常有用的工具,至少我经常使用函数来简化我的代码。 当然,函数还有更多值得学习的地方,在下知识浅薄,尚在探索学习。 在这里要重提 arguments.callee();它是所有函数...
  • WRian_Ban
  • WRian_Ban
  • 2016年01月31日 20:33
  • 493
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JavaScript高级编程笔记(1)
举报原因:
原因补充:

(最多只允许输入30个字)