JavaScript学习笔记(一) 基本概念

来源:互联网 发布:csgo优化帧数参数 编辑:程序博客网 时间:2024/04/27 18:26
从今天开始试着写点东西,好也罢,难看也罢。就当记录一下学习的过程吧!以后可以翻来看看,不用总是翻书,尤其电子稿,不方便做笔记。

面向对象(Object-Oriented)

在JavaScript代码中看到任何东西都可能是对象;
对象是非常简单的,可以看做一些命名的属性的集合(key-value),属性类型可以是function,我们称之为方法(method)。

JavaScript中有5中基本类型:number,string,boolean,null,undefined;
number,string,boolean可以非常容易的由程序猿或者解释器转换成JavaScript对象;
函数(Function)也是对象,也能有属性和方法。

在任何语言中最简单的事莫过于声明变量。在JavaScript中,当你声明一个变量的时候,就已经在和对象打交道了,只是你没有察觉到罢了。
在JavaScript中声明一个变量,变量会自动成为内部活动对象的(Activation Object)--如全局中的window,new Object()执行过程中的this--的属性,变量通常也like a object,可以有他自己的属性和方法。

JavaScript中有两种主要对象:
Native
JavaScript中内置的标准对象(Date, Array);
Host
JavaScript宿主环境对象(浏览器环境--window)。

没有Class(No Classes)

在JavaScript中没有Class,这是个比较新奇的概念,相对于其它语言;
在JavaScript中你可以创建一个""对象,你可以组装这个对象通过添加基本类型,函数或者其他对象作为它的属性;
这个""对象并不是完全的空的,它有一些内置的属性(从Object基础而来),但没有“自己”的属性(程序猿添加的);
Gang of Four book says, "Prefer object composition to class inheritance."。

原型(Prototypes)

JavaScript实实在在的存在继承的,也是唯一的方法复用代码(reuse code);
在JavaScript中继承可有有很多方法实现,使用prototype是非常常见的;
prototype也是一个对象(不要惊讶);
你创建的每一个function,就自动得到一个prototype属性指向一个“”对象(等于{}或Object()的对象,只不过prototype对象的constructor指向你定义的函数而不是内置的Object);
你可以为这个“”对象添加属性和方法(所有实例共享的),其他从这个对象继承的对象,都可以访问它们就像自己的属性;
记住:prototype是一个对象,每一个function都有一个prototype属性。

环境(Environment)

JavaScript需要一个环境去运行,通常是浏览器,但不是唯一的环境。
环境能提供它们自己宿主对象标准的也许,山寨的也可。

ECMAScript 5

核心的JavaScript(包括DOM,DOM和其他宿主对象)基于ECMAScript(ES)标准;
ES5添加一些新的内置对象,方法和属性;
最重要的是strict mode(严格模式),用于移除JavaScript功能,是编程更简单少犯错;
with的用法已经争论很多年了,ES5将它视为错误,虽然它在非strict mode是正确的;
strict mode可以用普通的字符串开启,而旧的实现会简单的忽略它,意味着strict mode是向后兼容的;
在任何一个作用域(函数作用域,全局作用域,或者在传递给eval()函数的字符串的第一行)
[javascript] view plaincopy
  1. function my() {  
  2.     "use strict";  
  3.     // rest of the function...  
  4. }  
ES5是个过渡版本,鼓励程序猿中strict mode但不是强制的,在未来strict mode应该是唯一的模式。

控制台(The Console)

控制台不是JavaScript语言的一部分,但是环境(浏览器)的一部分--在大部分浏览器中都存在;
控制台是一种简单而又不唐突的方式去打印一些数据,想对于alert();
控制台经常使用的方法有
log():打印所以传递给它的数据,console.log(window);
dir():枚举传递给它对象的所有属性, console.dir(window);
还有其他info()等方法;
可以使用debugger;语句下断点,当JavaScript脚本执行到这一行时,会自动暂停;
当你在控制台输入时,不用使用console.log(),可以直接输入。
0 0
原创粉丝点击