这是一系列对于初学者的 javascript 文章,包括很多的基础知识,由于我也是初学者,所以,翻译过来,大家一起学习,这一系列就叫做 javascript 101 吧,嘿嘿,当然,一般情况下,每篇文章,基本不会超过十分钟。
那么,就先从基本的“值”来说吧。
“值”的类型
在 javascript 中,与其他语言对比,很多不起眼的或者说对其他语言来说是缺点的东西,却恰恰是 javascript 的魅力所在。
看一下下面的例子。有几种数据类型。
var one = 1, oneObject = new Number(1);
log(one === oneObject);
log(typeof(one), typeof(oneObject));
也可以在这里直接进行调试:http://jsfiddle.net/uWup3/.
在这个例子中,使用了“恒等号”,也即是“===”,来对比 值 “1” 和 对象(object)“new Number(1)” 是否相等,肯定的,返回了 “false” ,原因就是 “1” 是原始值,而 “new Number(1)” 的到的是一个对象,可以通过 typeof 来验证。
其他的原始值:”undefined”,”Null”,”Boolean”,”Number”以及 “string”,对于涉及到未定义的数据的时候,其值为 “undefined”。
创建对象(object)
在 javascript 中,我们主要关注的还是对象,这也就是为什么 JSON 这么的流行和有用。其中的原因就是对象的灵活性。对于对象和原始值的主要区别就是“对象由多个项目组成”。
var javascript = {
influences: ['C', 'Java', 'Scheme']
, designer: 'Brendan Eich'
, created: new Date(1995, 0, 1)
};
在此对象(javascript)中的项目(influences/designer/created)被称作“属性”,而且对于属性的值,可以是不同类型的,例如原始值,对象,数组,等。这也就是对象的灵活之处。
还有一种创建对象的方式:
var javascript = new Object({
influences: ['C', 'Java', 'Scheme']
, designer: 'Brendan Eich'
, created: new Date(1995, 0, 1)
});
此种方式使用了 new Object 创建了一个对象的实例(instance),但是,虽然创建方式不一样,但是根据语言规范,这两种方式创建的对象是一样的。但是此种方式一般不推荐使用。
但是这里唯一需要注意的是,对于 constructor 函数的使用,很多种情况下 constructor 函数都是对象,另外,还有一些系统内置函数,例如 Date();
Constructors 函数
上一段代买,看起来其实不太像代码,而像一些数据的集合,那么这里我们将会创建一个 Constructor 函数(如何能使同一种功能的代码初始化),来使上段代码可以被重复利用。
function Language(designer, created, influences) {
this.designer = designer;
this.created = created;
this.influences = influences;
}
var javascript = new Language(
'Brendan Eich'
, new Date(1995, 0, 1)
, ['C', 'Java', 'Scheme']
);
这时候,同样的可以在创建一个实例:
var c = new Language(
'Dennis Ritchie'
, new Date(1972, 0, 1)
, ['B', 'ALGOL']
);
此构造函数可以使用 constructor 属性来访问,例如,此时,c.constructor 将返回:
function Language(designer, created, influences) {
this.designer = designer;
this.created = created;
this.influences = influences;
}
而 javascript.constructor 也将返回同样的代码。
在 ES5 的规范下,还有一些其他的原型对象的属性,例如,toString,还有比较陌生的 hasOwnProperty 方法。
这篇文章就讲到这里,下一篇将会介绍 prototypes (原型),javascript 中非常重要的概念。