javascript基础--对象(Object)封装

引言

说到对象,我想到一个成语叫作谈虎色变,对象应该说是javascript中最难得一部分,原因呢,首先,js作为函数式编程语言,对象的实现方式跟java,c,c++等面向对象设计语言不一样;其次js面向对象编程属于高级程序员应该掌握的,对于初学者来讲,没有实践基础,凭空理解更是难上加难。不过不用担心,我也不怎么会,我们就一起来探讨一下吧。

1.对象封装

我们举个例子,大千世界,人心难测。每个人都是独立的,有自己的思维,性别,年龄,会跑,会跳等等,人就是一个单位,一个整体,然后人与人之间才会有血缘关系,社会关系。试想,一个人都不完整,还谈什么其他东西呢?所以我们的首先任务就是“造人”,造人的方式的有很多种,当然肯定不是你想的那种,哈哈!好,接下来,开始造人吧!

2.封装模式一:工厂模式

工厂模式的原理:在函数内部创建object对象,对象属性由参数指定,方法也挂在object对象上,最后返回这个object对象。相当于Person函数是一个造人工厂,一下子造了Tom,Linda两个人。但是缺点是不知道这两个人什么类型的,你会说都是object啊,对啊,你回答这个答案就像我问你你现在在哪?你说你在地球上一样的道理。我们应该知道,js里所有事物都是object类型,所以为了搞明白这两个人具体的类型,我们另有他法,那就是构造函数模式。

function Person(name,sex){
   
    var o = new Object();
    o.name =  name;
    o.sex = sex;
    o.say = function(){
   
        console.log(this.name + ' is '+ this.sex)
    };
    return o;
}
var Tom = Person('Tom','male');
var Linda = Person('Linda','female');

3.封装模式二:构造函数模式

构造函数模式相比工厂函数就是知道Tom和Linda这两个人是Person类型,原理是new关键字默认执行了以下操作:
1.创建一个全新的对象
2.这个对象会被执行[[prototype]]连接原型
3.函数调用中的this会绑定到新对象
4.如果函数没有返回其他对象,那么new 构造就会自动返回这个新对象
注意:这里我特意加粗这句话,因为文末讲的寄生构函数模式的理解需要仰仗这句话。先透个底,如果函数像工厂函数那样返回了对象,那么new关键词也就不会执行默认操作。

function Person(name,sex){
   
    this.name = name;
    this.sex = sex;
    this.say = function(){
   
        console.log(this.name + ' is '+ this.sex);
    }
}
var Tom = new Person('Tom',
  • 6
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值