JavaScript学习
一、简介
JavaScript 被用来改进设计、用户体验、验证表单、检测浏览器、创建cookies...JavaScript 的正式名称是 "ECMAScript"。这个标准由 ECMA 组织发展和维护。
1. 什么是 JavaScript?
· JavaScript 是一种脚本语言(脚本语言是一种轻量级的编程语言)。
· JavaScript 由数行可执行计算机代码组成。
· JavaScript 通常被直接嵌入 HTML 页面。
· JavaScript 是一种解释性语言(就是说,代码执行不进行预编译)。)
· 所有的人无需购买许可证均可使用 JavaScript说明: 解释执行主要针对编译执行来说的,高级语言需要翻译成机器语言(汇编、机器码...) , javascript不需要编译,而是在执行的时候有解释器(浏览器)进行逐行解释。解释执行的优点是灵活方便,缺点是执行速度相对较慢
2.DOM文档对象模型
不同的浏览器文档对象模型有些区别(IE6中各节点之间的空格也计算为一个节点)
DOM把元素看做一种节点类型,只是DOM有12中节点类型,元素(Element)只是其中的一种。好在大多数节点只有从事XML的人才需要关心,对于HTML只需要懂得三种常用的节点类型就够了:元素、属性和文本。
描述 |
节点类型(nodeType) |
Element(元素) |
1 |
Attribute(属性) |
2 |
Text(文本) |
3 |
//查找HTML代码中是文本节点的,并且显示该节点的值
var elements = document.getElementsByTagName(“body”)[0].childNodes;
for (var i = 0; i < elements.length; i++) {
if (elements[i].nodeType == 3) alert(elements[i].nodeValue);
}
<html>
<head>
<title>My title</title>
</head>
<body>
<a href=”abc”>My link</a>
<h1>My header</h1>
</body>
</html>
3.BOM浏览器对象模型
JavaScript可以通过BOM提供的API,对浏览器窗口进行访问和操作。使用BOM,开发者可以移动窗口、改吧状态栏中的文本以及执行其他与页面内容不直接相关的动作。由于没有相关的BOM标准,每种浏览器都有自己的BOM实现;常见的BOM对象有:Window对象、Navigator对象、Screen对象、History对象、Location对象
常见的如:window.doument.getElementById()、window.location.href、window.history.go(-1)
二、JavaScript知识点
1.原始类型
ECMAScript 有 5 种原始类型(primitive type),即 Undefined、Null、Boolean、Number 和 String。
可以通过typeOf运算符来判断,对象,数组和null的typeOf为object类型(代码示例1)
2.JavaScript中模拟函数重载
ECMAScript函数的参数与大多数其他语言中的函数参数有所不同。ECMAScript函数不介意传递进来多少个参数,也不在乎参数的类型。之所以这样,是因为ECMAScript中的参数在内部是用一个数组表示的。函数接收的始终是这个数组,实际上,在函数体内可以通过arguments对象来访问这个参数数组,从而传递给每一个参数。(代码示例2)
ECMAScript函数:命名的参数值提供便利,但不是必需的。Arguments对象可以与命名参数一起使用,并且Arguments对应参数的值与对应命名参数的值是保持同步的(代码示例3)
综上所述:JavaScript中不存在重载,但可以通过arguments对象模拟实现函数重载
3.JavaScript中对象
JavaScript中创建对象:
var book = new Object(); book._year= “zhangsan”; book.edition= 33;
var book= { name: “zhangsan”, number: 33 };
设置对象属性的特性
var book = { _year: 2012, edition: 1 };
Object.defineProperties(book, {
_year: { configurable: false, writable: false, value: 2012 },
edition: { configurable: false, writable: true, value: 1 },
year: {
get: function() { return this._year; },
set: function(newValue) {
if( newValue > 2012) {
this._year = newValue;
this.edition += newValue - 2012;
}
}
}
});
book.year = 2013;
alert(book.edition); //2
var descriptor = Object.getOwnPropertyDescriptor(book, "_year");
alert(descriptor.value + ":" + descriptor.configurable + ":" + typeof descriptor.get);
//顺带讲一下Javascript的方法种类。我个人将Javascript的方法分为三种:
//<1>类方法
//<2>对象方法
//<3>原型方法
function People(name){
this.name=name;
//对象方法
this.Introduce = function(){
alert("My name is "+this.name);
};
}
//类方法
People.Run=function(){
alert("I can run");
};
//原型方法
People.prototype.IntroduceChinese=function(){
alert(" 我的名字是"+this.name);
};
var p1 = new People("Windking");
p1.Introduce();
People.Run();
p1.IntroduceChinese();
function tree (opt){
this.__id = opt.id;
};
tree.init = function (opt) {
return new tree(opt);
};
tree.prototype = {
id: function(){ alert(this.__id); },
other_id: function(){ alert(this.__id); }
};
tree.init({id: 122}).id();
tree.init({id: 3231}).other_id();
4.原型
JavaScript被称为基于原型(prototype)的语言,其原因在于继承是通过原型链来实现的。在前面的例子中,每个新的对象实例化时都会把原对象的属性和方法复制一份。如果存在1000个对象,就会有1000份属性和方法--每一份都单独占据一块内存
为了避免这种额外的开销,JavaScript引入了一个特殊的原型属性,附在原型属性上的方法将被所有对象共享:
var Adder = function(valueA, valueB) {
this.value = valueA + valueB;
}
Adder.prototype.result = function() { alert(this.value); };
var added = new Adder(4, 3);
added.result();
5.闭包
简单来说,闭包就是在另一个作用域中保存了一份它从上一级函数或作用域取得的变量(键值对),而这些键值对是不会随上一级函数的执行完成而销毁。
闭包就是“属性表”,闭包就是一个数据块,闭包就是一个存放着“Name=Value”的对照表。就这么简单。但是,必须强调,闭包是一个运行期概念。
在Javascript中闭包(Closure),有两个特点:
· 作为一个函数变量的一个引用 - 当函数返回时,其处于激活状态。
· 一个闭包就是当一个函数返回时,一个没有释放资源的栈区。
现在比较让人认同的闭包实现有如下三种
with(obj){
//这里是对象闭包
}
(function(){
//函数闭包
})()
try{
//...
}catch(e) {
//catch闭包 但IE里不行
}
闭包的用途
闭包可以用在许多地方。它的最大用处有两个,一个是前面提到的可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中。
如下例 (代码示例)
//*************闭包uniqueID*************
uniqueID = (function(){
var id = 0;
var rtnMethod = function(){return id++;};
return rtnMethod;
})();
document.writeln(uniqueID());//0
document.writeln(uniqueID());//1
document.writeln(uniqueID());//2
document.writeln(uniqueID());//3
document.writeln(uniqueID());//4
在这段代码中,uniqueID实际上就是闭包return返回的函数。uniqueID是rtnMethod的父函数,而rtnMethod被付给了一个全局变量, 这导致rtnMethod始终在内存中, 而rtnMethod的存在依赖于uniqueID,因此uniqueID也始终在内存中,不会再调用结束后,被垃圾回收(grabage collection)机制回收
JavaScript没有块级作用域,只有函数级作用域
function User( properties ) {
//这里一定要声明一个变量来指向当前的instance
var objthis =this;
for (var i in properties ) {
(function(){
//在闭包内,t每次都是新的,而 properties[i] 的值是for里面的
var t = properties[i];
objthis["get" + i ] =function() {return t;};
objthis["set" + i ] =function(val) {t = val;};
})();
}
}
6.JavaScript中继承
JavaScript中继承分为深继承和浅继承。Prototype原型继承属于浅继承,下例是深继承
function base() {
this.member = " dnnsun_Member";
this.method = function() { window.alert(this.member); }
}
function extend() {
base.call(this);
window.alert(member);
window.alert(this.method);
}
extend();
浅继承
var Dog = function() {};
Dog.prototype.bark = function() { alert(“woof”);};
var DogA = function() {};
DogA.prototype = new Dog();
var a = new DogA();
a.bark();
相关推荐
这份"JavaScript学习指南"高清PDF,无疑为想要深入理解JavaScript的初学者或有一定基础的开发者提供了宝贵的资源。下面,我们将深入探讨JavaScript的一些关键知识点。 1. **基础语法**:JavaScript的基础包括变量、...
JavaScript学习(一) JavaScript是一种广泛应用于网页和网络应用的脚本语言,由 Netscape 的 Brendan Eich 在1995年发明。它主要用于客户端的网页交互,赋予网页动态功能,如响应用户操作、处理数据、与服务器通信...
这份"非常全面的JavaScript学习资料"压缩包,包含了11个深入学习JavaScript的文件,旨在为学习者提供一个详尽且丰富的学习路径。 1. **基础概念**:JavaScript的基础包括变量、数据类型(如字符串、数字、布尔值、...
JavaScript学习指南 JavaScript,一种广泛应用于网页和网络应用的脚本语言,是互联网上最流行的编程语言之一。它主要用于客户端的交互式网页开发,也可以在服务器端通过Node.js平台进行后端开发。JavaScript与Java...
本书“JavaScript学习指南”旨在帮助初学者和有经验的开发者深入理解和掌握JavaScript的核心概念和技术。 首先,JavaScript在网页中的主要作用是处理用户交互、操作DOM(文档对象模型)、进行AJAX(异步JavaScript...
本“JavaScript学习指南”源代码包含了深入理解并掌握JavaScript编程的关键知识点。 一、基础语法 JavaScript的基础语法包括变量声明(var、let、const)、数据类型(如字符串、数字、布尔值、null、undefined、...
本资源包"JavaScript学习资料全面整理"显然是为了帮助初学者和进阶者深入理解这门语言,包含了各种资源,下面将对JavaScript的一些关键知识点进行详细阐述。 1. **基础概念**:JavaScript是一种解释型、弱类型、...
这份"JavaScript学习PPT"是专为初学者设计的,旨在帮助他们掌握JavaScript的基础概念和核心技能。 首先,JavaScript的核心构成包括变量、数据类型、控制结构、函数和对象。变量是存储数据的地方,JavaScript支持...
个人Javascript学习笔记 精华版 本资源为个人Javascript学习笔记的精华版,涵盖了Javascript的基础知识、事件处理、对象和系统函数、浏览器对象等方面的内容。下面是对每个知识点的详细说明: 1. 什么是JavaScript...
JavaScript学习指南第三版,学习JavaScript的同学欢迎来下载
在“javascript学习资料(ppt+代码)”这个压缩包中,我们可以期待找到一系列关于JavaScript的学习资源,包括PPT演示文稿和实际的代码示例。PPT通常会包含JavaScript的基础概念、语法特性、函数、对象、数组、循环、...
《PHP、MySQL与JavaScript学习手册 第4版》是一本针对初学者和进阶者全面讲解这三种技术的权威指南。本书旨在帮助读者掌握Web开发的核心技能,通过理论结合实践,深入理解PHP、MySQL和JavaScript之间的协作关系,...
这个压缩包中的“史上最全的JavaScript学习资料”显然包含了一系列丰富的资源,旨在帮助学习者深入理解和掌握JavaScript。 JavaScript最初由Netscape公司的Brendan Eich设计,目的是为了解决网页动态交互的问题,使...
这份"Javascript学习资料"包含了对这门语言深入理解和实践的关键知识点。 标题中的"Javascript学习资料"表明这是一个针对初学者或者希望提升技能的开发者的学习资源集合。其中包含了一本名为"10步学习 JavaScript....
JavaScript学习资料大全,包括《JavaScript实例》、《JavaScript教程》、《Javascript语言教程》、《JavaScript技术讲座》、《Javascript源码大全1.0版》、《javascript教程.chm》、《JavaScript源代码集》、...
这份"JavaScript学习帮助文档"是专为初学者设计的,旨在帮助他们掌握JavaScript的基础知识和实际应用技巧。 首先,JavaScript的基本语法是学习的起点。它是一种基于原型的、动态类型的、弱类型的脚本语言。这意味着...
这份"javascript学习资料"包含的JavaScript1.ppt、JavaScript2.ppt、JavaScript3.ppt三个文件,很可能是系列讲座或教程的课件,它们会详细讲解JavaScript的基本概念、语法和常见应用。 首先,JavaScript的基础部分...
学习javascript的pdf资料,素有“javascript圣经”之说。不过全部英文,值得深研。