"对象是具体的,类是抽象的!其他编程语言这块分的还是挺清楚的,在 Javascript 中类和对象有时是傻傻分不清楚.小白你看看这段代码可以执行么?"
小白看完以后说道:"你这是定义了一个男人对象,然后给对象赋值后输出对象的名字和电话吧!应该可以执行!"
老朱:"错了,这个是执行不了的,你有没有注意到 Man 里面 name 变量前面加了 this,如果定义变量的时候前面加了 this,就说明这个变量是 Man 的公共变量,注意不是全局变量,公共变量是指通过 Man 的实例可以进行读写的变量.function 内部定义的时候如果定义变量或者函数前面加了 this,基本可以确定这是一个类,类是不能直接使用的,我们需要实例化(new)一下."
"你可以这样理解,上面定义的是一个男人类,下面通过 new 实例化了一个对象 xiaobai(小白是一个新的男人对象),实例化的对象就可以使用 Man 里面前面带 this 的属性和方法了."
小白接着问:"我看到 sex 定义的时候前面用了 var,这说明它是一个局部变量,它的作用是什么呢?"
老朱说道:"小白,你观察的很仔细.你可以思考一个事情,如果一个人属于男人类,他的性别肯定是男,我们肯定不允许改变他的性别属性."
小白说:"可是有时候我可能还需要使用到性别信息,怎样才能让 xiaobai 这个实例既可以拿到性别信息又不能更改呢?"
老朱说:"这个好办啊,在 Man 里面再写一个方法就可以了."
"这样不就实现既不能修改 sex 属性又能获取他了么?在类中定义变量前面加 var 更专业的叫法是'私有变量',私有变量之针对对象内部使用,通过对象实例无法直接接触到它,需要通过其他方法才能拿到.另外类中的方法有两种定义私有方法的方式,这样它就只能被这个类的实例内部使用,外部无法接触."
老朱继续说道:"如果你直接使用 xiaobai 这个实例调用 checktel 或者 checkname 方法程序就会报错."
小白看完以后感慨道:"原理我明白了,可以想不通怎么去使用它,我想我还得多看看这方面的资料,朱哥您先忙着,我去练习了."
想学 H5 的朋友可以关注老炉,您的关注是我持续更新《小白 html5 成长之路》的动力!
来源: http://www.jianshu.com/p/47a1ae90da6c