javascript面向对象——创建对象的几种方式

1.字面值

var person = {
    name:'jack',
    age:20
};

1.通过new关键词

 var persons = new Object();
 persons.firstname = 'john';
 persons.lastname = 'Doe';
 persons.age = 50 ;

3.create来创建,通常该方法用来创建继承对象

 var child = Object.create(persons); //继承父类的属性
 child.name = 'jack';
 child.sex = 'nan';
 console.log(child);

创建对象的高级方法
1.工厂模式

  function createPerson(name,age) {
       return{
           name:name,
           age:age,
           sayHei:function () {
               return name + age;
           }
       }
   }

   let p1 = createPerson('jack','18');

工厂模式创建的对象1.在一个函数内部生成、2.并不能解决资源占用的问题 3、方法名小写

2.构造函数模式

 function CreatePerson(name,age) {
     this.name = name;
     this.age = age;
     this.sayHei = function () {
         return this.name + this.age;
     }
 }
 let p1 = new createPerson('jack',18);

构造模式创建的对象:
1.通过new来调用这个函数
2.this指的是对象的原型实例
3.构造模式的方法命名采用pascal命名法,每个单词首字母大写
4.也不能解决资源占用的问题

3.原型模式
么个对象下面都有一个Prototype原型对象,解决了资源占用问题,但当成员为引用类型时会有问题

 function person() {}
 person.prototype.name = 0;
 person.prototype.age = 0;
 person.prototype.sayHei = function () {
     return this.name + this.age;
 }
 let p1 = new person();
 person.prototype.name = 'jack';
 person.prototype.age =20;

4.混合模式
构造模式+原型模式
实现了属性专享,方法共享
即解决资源占用问题,也解决成员为引用类型的问题

 function person(name,age) {
     this.name = name;
     this.age = age;
 }
 person.prototype.sayHei = function () {
     return this.name + this.age;
 }

 let p = new person('jack',18);
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值