博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js(3)面向对象的程序设计
阅读量:6004 次
发布时间:2019-06-20

本文共 1280 字,大约阅读时间需要 4 分钟。

面向对象(OO)语言都有一个标志,就是都有类的概念,而通过类可以创建多个具有相同属性和方法的对象

一:进行创建对象

1,工厂模式:

工厂模式是使用函数来封装特定接口的创建对象胡细节,代码如下:

function  createPerson(name,age,job){     var  o=new Object();     o.name=name;     o.age=age;     o.job=job;     o.sayName=function(){     alert(this.name)        }      return o }var Person1=createPerson("zhangningning",21,"doctor")

 缺点:没有解决对象识别的问题

2.构造函数模式:

通过创建自定义的构造函数,

代码如下:

function Person(name,age,job){     this.name=name;     this.age=age;     this.sayname=function(){                 alert(this.name)      }      }var person1=new  Person("zhangningning",21,"student")    

使用new操作符的过程:

(1),创建一个新对象

(2),将构造函数中的作用域赋给新对象

(3),执行构造函数中的代码

(4),返回新对象

缺点:会导致不同实例上的同名函数是不相同的

通过构造函数创建的实例中存在一个constructor属性,这个属性指向person

3,原型模式

每个函数都有一个原型属性,属性是一个指针,指向一个对象,对象包含由特定类型的所有实例共享的属性和方法

可以将方法添加到原型中,所有的实例就都会共享

可以通过对象实例访问保存在原型中的值,不能通对象实例重写原型中的值,如果在实例中添加一个属性,这个属性和原型对象中的属性同名,就会覆盖原型中的属性

function Person(){}     Person.prototype.name="Nicholas";     Person.protype.age=29;     Person.protype.sayname=function(){        alert(this.name)}var person1=new Person();person1.Sayname();//“Nicholas” 

代码如上:

我们通过给函数的原型上添加属性和方法,可以实现属性和方法的共享,但是由于我们将属性和方法都定义到了函数原型上,因此所有的实例都会共享原型上的属性和方法,为了解决这个问题,我们通过组合使用构造函数模式和原型模式:

4,组合使用构造函数模式和原型模式,这是最常用的一种模式

代码如下:

 

转载于:https://www.cnblogs.com/qianduangaoshou/p/6835004.html

你可能感兴趣的文章
String、StringBuffer和StringBuilder的区别
查看>>
【原创】ObjectARX中的代理对象
查看>>
.net中验证码的几种常用方法
查看>>
解决OracleDBConsoleorcl不能启动
查看>>
.net DLL程序集中打包另一个DLL
查看>>
我的友情链接
查看>>
Drupal第三方模块汇集(一)
查看>>
我的友情链接
查看>>
使用spring的自身的listener进行web的配置
查看>>
linux学习之“VI”与“VIM”
查看>>
linux下无线网卡驱动安装
查看>>
oracle recyclebin与flashback drop
查看>>
我的友情链接
查看>>
svmlight使用说明
查看>>
LVM
查看>>
学习之shell脚本
查看>>
Andorid Launcher程序代码分析
查看>>
Swing 和AWT之间的关系
查看>>
Mysql设置自增长主键的初始值
查看>>
Android计时器正确应用方式解析
查看>>