var dog = {
"pre" : "嘘~",
"sub" : {
"name" : "蛋花汤",
"act" : "在睡觉",
"time" : 12
},
"suf" : [ "我说了", "它在睡觉", "就是在睡觉" ]
};
有两种方式能得到 JSON对象 中的某个键名的键值,第一种是用点连接,第二种是用中括号:
javascript
复制代码 代码如下:
dog
.pre;
dog["pre"];
注意:上面在用点的时候,后面直接跟的是JSON中的key,如果把key当成是变量去当问,只能用dog[key]试试看:现在你自己动手试试看,用 for...in 的形式遍历一遍上面的 JSON对象。别忘了用上 typeof 喵~
类(对象)的基础
严格意义上来讲,Node.js 的类不能算是类,其实它只是一个函数的集合体,加一些成员变量。它的本质其实是一个函数。
不过为了通俗地讲,我们接下去以及以后都将其称为“类”,实例化的叫“对象”。
因为类有着很多 函数 的特性,或者说它的本质就是一个 函数,所以这里面我们可能一不留神就顺带着把函数基础给讲了。
类的声明和实例化
声明一个类非常简单,大家不要笑:
javascript
function foo() {
//...
}
好了,我们已经写好了一个 foo 类了。
真的假的?!真的。
不信?不信你可以接下去打一段代码看看:
javascript
var bar = new foo();
别看它是一个函数,如果以这样的形式(new)写出来,它就是这个类的实例化。
而这个所谓的 foo() 其实就是这个 foo() 类的构造函数。
成员变量
成员变量有好两种方法。
第一种就是在类的构造函数或者任何构造函数中使用 this.<变量名> 。你可以在任何时候声明一个成员变量,在外部不影响使用,反正就算在还未声明的时候使用它,也会有一个 undefined 来撑着。所以说这就是第一种方法:
复制代码 代码如下:
javascript
function foo() {
this.hello = "world";
}
注意:只有在加了 this 的时候才是调用类的成员变量,否则只是函数内的一个局部变量而已。要分清楚有没有 this 的时候变量的作用范围。
第二种方法就是在构造函数或者任何成员函数外部声明,其格式是 <类名>.prototype.<变量名>:
javascript
复制代码 代码如下:
function foo() {
//...
}
foo.prototype.hello = "world";
无论上面哪种方法都是对成员变量的声明,我们可以看看效果:
javascript
复制代码 代码如下:
var bar = new foo();
console.log(bar.hello);
甚至你可以这么修改这个类:
javascript
复制代码 代码如下:
function foo() {
this.hello = "world";
}
foo.prototype.hello = "蛋花汤";
然后再用上面的代码输出。
想想看为什么输出的还是 world 而不是 蛋花汤。
构造函数
我们之前说过了这个 foo() 实际上是一个 构造函数。那么显然我们可以给构造函数传参数,所以就有了下面的代码:
javascript
复制代码 代码如下:
// 代码2.1
function foo(hello) {
if(hello =https://www.jb51.net/article/== undefined) {
this.hello = "world";
} else {
this.hello = hello;
}
}
我们看到上面有一个奇葩的判断 if(hello =https://www.jb51.net/article/== undefined),这个判断有什么用呢?第一种可能,就是开发者很蛋疼地特意传进去一个 undefined 进去,这个时候它是 undefined 无可厚非。