我的第一篇博客
之前学习了JavaScript,但是面向对象部分一直没有时间去学,搁了很久,估计有大半年了吧。最近又花了点时间学习了一下,很感谢韩顺平老师的视频,让我受益匪浅,如果说我在IT行业中有偶像的话,那就是你了。
一直支持!
JavaScript并不比php简单,他的面向对象也是有很多东西的,没有人带,自己学是很容易犯晕的。
下面是一些概念的对比
1.基于对象(可以理解为就是面向对象)
2.原型对象(可以理解为就是类),有很多内置的原型对象(类),Array,Number等。
下面的各个点中知道这个叫法的意思就行了
3.封装,它的封装只有公开的和私有的(相当于其他语言的public和private)
在类里面,有this调用的属性和方法是公有的,没有this就是私有的
function Person(){
this.age=33;
var name='freeda';
nickName='hahaha';
}
4.哪个对象实例调用了this所在的函数,this就代表哪个对象实例
5.继承,继承方式:通过对象冒充来继承的。先将类(原型对象)赋值给子类的一个属性,执行这个属性。
下面类Freeda继承类Person
function Person(age){
this.age=age;
this.speak=function(){
alert("speak");
}
}
function Freeda(){
this.people=Person;
this.people(23);//js是动态语言,如果不执行这一句就不能继承,要用到再就执行,不然就不执行,不会先编译好给我们
}
var freeda=new Freeda();
freeda.speak();
alert(freeda.age);
6.多态:一个引用的类型在不同情况下的多种状态。
js其实是无态的,一个变量的类型是在运行的过程中由js引擎来决定的。所以js就是天生支持多态。
function Person(age){
this.age=age;
this.speak=function(){
alert("person speak");
}
}
function Cat(age){
this.age=age;
this.speak=function(){
alert("cat speak");
}
}
//下面的object在变,之前是Person类的对象,后来是Cat类的对象,看构造函数
var object=new Person();
object.speak();
alert(object.constructor);
var object=new Cat();
object.speak();
alert(object.constructor);
7.由于每次new一个对象都要创建一个类里面的方法,若是有很多的对象,那就要很多的方法(代码段),这样不划算,所以有了原型prototype。这个类的每个对象共用一个代码段。而不是每次在内存的堆创建一个同样的方法。
在类的外面创建原型
Person.prototype.speak=function(){};
8.对象在内存中的存储机制跟php一样,回收机制(GC,Garbage Collection)也一样,没有被引用就会被回收。
浏览器内部有一个js引擎,管理者一张表,记录着每一个对象被引用的次数,当次数为0时,就回收该对象
9.闭包:闭包就是处理一个对象的属性,何时被gc回收的问题
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。