JavaScript 的面向对象重要概念

我的第一篇博客    

之前学习了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回收的问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值