javascript(js)创建对象的模式与继承的几种方式

1.js创建对象的几种方式

工厂模式

为什么会产生工厂模式,原因是使用同一个接口创建很多对象,会产生大量的重复代码,为了解决这个问题,产生了工厂模式。

function createPerson(name,age,job){

    var o=new Object();

    o.name=name;

    o.age=age;

    o.job=job;

    o.sayName=function(){

    console.log(this.name);

   }

  return o;

}

var person1=createPerson("kobe","34","player");

var person2=createPerosn("patty","32","singer");

 构造函数模式

与工厂模式不同的是,没有显示的创建对象,直接将属性和方法赋值this对象,没有return语句。

function Person(name,age,job){

    this.name=name;

    this.age=age;

    this.job=job;

    this.sayName=function(){

    console.log(this.name);

   };

}

var person1=new Person();

var person2=new Person();

console.log(person1.sayName==person2.sayName)//false 说明不同实例的同名函数是不相等的

如果我们想要的结果是两者相等,可以这样实现

function  Person(name,age,job){

   this.name=name;

   this.age=age;

   this.job=job;

   this.sayName=sayName;

}

function sayName(){

   console.log(this.name);

}

var person1=new Person();

var person2=new Person();

console.log(person1.sayName==person2.sayName);//true

创建Person的新实例,需要用到new操作符,这种方式下调用构造函数会经历四个阶段,分别是:

创建一个新对象

将构造函数的作用域赋值给这个新的对象

执行构造函数中的代码

返回新对象

person1和person2这两个对象都有一个constructor属性,该属性指向Person

console.log(person1.constructor==Person);//true

console.log(person2.constructor==Person);//true

原型模式

特点:新对象的这些属性和方法是所有实例共享的

function Person(){

}

Person.prototype.name="kobe";

Person.prototype.age=38;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值