看燕十八老师的《JavaScript高级》课程,对js的面向对象的笔记记录!
先有人还是先有人类?
如果从构物主的角度讲,脑子中要先构想人类的形象,然后再造人。先有类,再有对象,如java、php、c++等语言,先把类构建好才能有对象。通过类造的对象,所有对象都一个模板,如果类改变了,所有对象也会跟着改变。这也不符合生物的规律。
如果从地球生物演化的角度讲,先有人,总结人所具有的特征才形成了人类。基于演化而来。在js中,对象不依赖于类的存在,这是js第一个灵活的地方。
js中的对象只是一个"属性字典",就像php中的关联数组,因此我们可以直接造对象,不要类。{key:value,key:value}这种格式声明的对象称为json格式的对象。js对象的属性,也是可以任意添加和删除(用delete关键字)的。
私有属性与封装
1.用构造函数创建对象
function Dog(){ this.leg=4; this.bark=function(){ alert("汪汪!") } } var huzi=new Dog(); huzi.bark();
到这里还没有实现封装,封装就是开放一部分,封闭一部分。外界通过访问开放的部分来达到间接访问封闭部分。
2.用闭包来完成js面向对象之私有属性
function Girl(name,bf){ var love=bf; this.name=name; this.showLove=function(){ return love; } this.moveLove=function(){ love="薛潘"; } } var girl=new Girl("林黛玉","贾宝玉"); console.log(girl.showLove()); console.log(girl.moveLove()); console.log(girl.showLove());
原文:http://www.cnblogs.com/iagw/p/6387132.html