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()函数的字符串的第一行)
- function my() {
- "use strict";
- // rest of the function...
- }
ES5是个过渡版本,鼓励程序猿中strict mode但不是强制的,在未来strict mode应该是唯一的模式。
控制台(The Console)
控制台不是JavaScript语言的一部分,但是环境(浏览器)的一部分--在大部分浏览器中都存在;
控制台是一种简单而又不唐突的方式去打印一些数据,想对于alert();
控制台经常使用的方法有
log():打印所以传递给它的数据,console.log(window);
dir():枚举传递给它对象的所有属性, console.dir(window);
还有其他info()等方法;
可以使用debugger;语句下断点,当JavaScript脚本执行到这一行时,会自动暂停;
当你在控制台输入时,不用使用console.log(),可以直接输入。
0 0
- JavaScript学习笔记(一) 基本概念
- JavaScript学习笔记(一) 基本概念
- JavaScript学习笔记(一)基本概念及语法
- JavaScript学习笔记(一)基本概念及基本数据类型
- hbase 学习笔记一---基本概念
- UE4学习笔记(一): 基本概念
- hbase 学习笔记一---基本概念
- Cookie学习笔记一:基本概念
- UE4学习笔记(一): 基本概念
- Kafka学习笔记一:基本概念
- 《javascript DOM 编程艺术》学习笔记(一)——JS的发展与基本概念
- SOA学习笔记(一)----SOA基本概念
- 编解码学习笔记(一):基本概念
- 编解码学习笔记(一):基本概念
- linux多线程学习笔记一---基本概念
- 编解码学习笔记(一):基本概念
- 编解码学习笔记(一):基本概念
- Activiti学习笔记一 工作流基本概念
- Ubuntu-cacti搭建
- 笔记之Ruby(二)
- Java中两种区别不同类型Exception的方法
- SVM&SVR
- 面试经典(8)--树的子结构
- JavaScript学习笔记(一) 基本概念
- Monkey学习
- windows如何修改系统盘大小(非用第三方软件)
- 通过target-action 实现关灯游戏
- hdu4450 不错的贪心
- LeetCode: Longest Consecutive Sequence
- 四千GB电脑技术高清视频教程和23万套各类源码模板
- 【数组】Remove Element
- [2010山东ACM省赛] Ivan comes again!(set 的使用)