面向对象编程----封装

一、什么是封装?

封装就是一个把事物包装起来,尽可能的隐藏细节

二、构造函数的封装

function Cat(name,color){
       this.name=name;
       this.color=color;
}
var cat1=new Cat('大毛','黄色');
var cat2=new Cat('二毛','黑色')> 这就是构造函数的封装,关键词是得有this和new才算是构造函数
> 以下有两个方法可以判断cat1和cat2是否指向同个原型

 1. constructor属性可以指向对象的原型
     console.log(cat1.constructor==Cat);//true
     console.log(cat2.constructor==Cat);//true
 2.instanceof 运算符验证原生对象和实例对象之间的关系
    console.log(cat1 instanceof Cat);//true

但是利用构造函数封装,容易产生浪费内存,如果构造函数里面有个属性和方法是不变的,那么每次创建一个实例都要把不变的属性和方法都重新创建一遍,这就造成了内存浪费,可以用prototype来解决
在JavaScript中,每个构造函数都有一个prototype属性,指向另一个对象,这个对象的属性和方法都会被prototype给继承,因此我们可以把不变的属性和方法放在prototype里面;

function Cat(name,color){
       this.name=name;
       this.color=color;
}
//prototype这样使用
Cat.prototype.type="猫科动物";
Cat.prototype.eat=function(){console.log(this.name+"在吃饭")};
var cat1=new Cat('大毛','黄色');
var cat2=new Cat('二毛','黑色');
cat1.eat();
cat2.eat();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值