深入JavaScript - 基础

王朝学院·作者佚名  2016-04-26
窄屏简体版  字體: 小  |  中  |  大  |  超大  

要深入javaScript, 下面的一些名词出现的频率非常高, 有些名字又很相近, 所以容易变得迷惑不清, 所以在理解就会限入不良的循环, 可能会感觉在用不理解的东西去解释一个新东西, 后果可想而知. 如下是ECMAScript规范, 也是Javascript实现的标准, 如果我们把最基础的东西, 也就是用来解释其它机制的东西都弄清楚了, 理解高级特性的时候就会变得容易了.

类型(Type): 数据的集合

原始值(PRimitive Value): 只能是 Undefined, Null, Boolean, Number or String其中之一的值. 如: undefined, null, true / false, 3.1415926, "Hello world!"

对象(object): 是Object类型的一员(注意大小写), 它是一些无序的,属性的集合; 属性可以是原始值, 另一个对象 或一个函数. 保存在对象属性里的函数通常叫做方法(method).

构造函数(Constructor): constructor 是一个函数对象(Function object). 好吧, 这里出现一个让人迷惑的词: 函数对象. 这里先不详细解释, 记住既然它叫做构造函数, 那它自然是一个函数, 以后会讲. 每个构造函数必定有一个原型对象(prototype object), JavsScript里用它来实现继承和属性共享. 继承是高级应用, 以后再说. constuctor在继承的实现时是一个需要留神的地方.

*任何函数都可以是构造函数, 但是并不是所有的函数都适合做构造函数, 要看我们定义这个函数的目的是什么.

?

1

2

3

4

5

6

7

8

9

10

11

var add = function(m, n) {

return m + n;

}

var sum = add(3, 6); // 有实际意义, 完成特定功能的模块

var foo = new add(); // 像它的名字foo一样, 毫无意义, 但是无意义并不代表把add作为构造函数来用会产<BR> //生语法 / 句法的错误! 仅仅是没有意义.

var Book = function(bookName) {

this.bookName = bookName;

}

var book = Book("JaveScript权威指南"); // 就上面的代码来看, 毫无意义

var myFavourateBook = new Book("JaveScript权威指南"); // 作为构造函数, 用来产生Book的实例.

原型(prototype): 原型属性指向的是一个对象! 一般叫它原型对象. JavaScript用它来实现好的继承机制.

当构造函数(constructor) C(假设为构造函数的名字)创建一个新对象newObj的时候, newObj会有一个隐式的引用, 到构造函数C的prototype上. 让人迷惑, 请看代码和注释

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

var C = function() {

// 构造函数. 为什么这样定义? 为什么是一个函数 而不是 C = {}?

// 可以这样记, 抛弃一切高级概念,

// 既然叫构造函数, 那它就是一个函数, 所以要用函数定义或函数表达式这种形式.

// 按高级OOP语言(如Java, C++, ...)的惯例, 首字母要大写

}

var newObj = new C();

C.prototype; // newObj会隐式的引用这个对象

// newObj会隐式的引用, 为什么用"隐式"这个词?

// 因为我们不能像 C.prototype 这种表达式直接引用到, 他是语言内部实现的东西.

// 但是在Chrome中我们可以用 __proto__ 这个属性来访问到这个隐式的连接, 程序中是不应该这么用的,

// Chrome应该是为了方便开发者才提供这样的访问.

newObj.__proto__ === C.prototype; // true

// 把上面这句翻译成中文就是: 用构造函数C创建的新对象newObj,

// 隐式的引用(newObj.__proto__)到了构造函数的原型对象(C.prototype).

待续... 欢迎指正, 共同进步. 后面就是涉及宿住环境的对象, 和内建对象一些说明. 这些是开始, 可能看到上面关于prototype介绍, 还是一大堆问号, 在以后会继续一点点的写 :) 尽量每一篇的topic少, 内容多 :)

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航