博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Javascript】类,封装性 -- 1
阅读量:6800 次
发布时间:2019-06-26

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

组合使用构造函数模式和原型模式(优化方案)

方式: 构造函数模式用于定义实例属性,而原型模式用于定义方法和共享属性。

 

代码:要求编写一段程序,实现统计人数,给每个人分配姓名,年龄,工作等属性,并且可以给每个人分配好友,并且可以查看好友的信息。

Javascript代码:

//构造函数模式用于定义实例属性,而原型模式用于定义方法和共享属性function God(){        //构造函数模式    this.children = new Array();    this.totalNumber = 0;}//原型模式God.prototype = {    //在原型模式中,可以有函数,也可以有属性    constructor: God,    name: "GOOGLE",    //显示所有的孩子    showChildren : function(){            for(var i = 0; i < this.children.length; i++){                    document.write(i+"th child is "+this.children[i].name+'
'); } }, //添加一个孩子 addOneChild : function(name, age, job){ this.totalNumber++; var child = new Person(name, age, job); this.children.push(child); return child; }, //统计孩子的个数 tellNumber : function(){ document.write("Currently, there are "+this.totalNumber+" children"+'
'); }}function Person(name, age, job){ //构造函数模式 this.name = name || ''; this.age = age || ''; this.job = job || ''; this.friends = [];}//原型模式Person.prototype = { constructor: Person, //姓名 sayName : function(){ document.write("sayName: "+this.name+'
'); }, sayHello : function(){ document.write("Hello, This is "+this.name+'
'); }, //添加一个朋友 addFriend : function(obj){ if(obj===this){ return; }else{ this.friends.push(obj); } }, //显示所有的朋友 showFriends : function(){ if(this.friends.length == 0){ document.write(this.name+" has no friend
"); return;} for(var i = 0; i < this.friends.length; i++){ document.write(this.name+" is friend with "+this.friends[i].name+'
'); } }}function doFirst(){ var god = new God(); var yuri = god.addOneChild('yuri', 22, 'Singer'); var yoona = god.addOneChild('yoona', 21, 'singer'); var zhentian = god.addOneChild('Zhentian', 24, 'Programmer'); god.showChildren(); yuri.addFriend(yuri); yuri.addFriend(yoona); yuri.sayName(); yuri.showFriends(); zhentian.showFriends(); god.tellNumber();}

 

html代码:

 

转载地址:http://gfuwl.baihongyu.com/

你可能感兴趣的文章
[Leetcode] Container With Most Water
查看>>
查看版本信息的命令
查看>>
Linux搭建SVN服务器
查看>>
UML 之 数据流图(DFD)
查看>>
IO知识点整理(文件File类的使用)
查看>>
mahout 实现canopy
查看>>
修炼你自己
查看>>
窥探一句话木马后门的背后
查看>>
Kafka设计解析(二):Kafka High Availability (上)-转
查看>>
bzoj2186【SDOI2008】沙拉公主的困惑
查看>>
Lambda 表达式的演示样例-来源(MSDN)
查看>>
什么场景应该用 MongoDB ?
查看>>
python学习:猜数字游戏
查看>>
Linux 进程、线程运行在指定CPU核上
查看>>
iOS11开发教程(二十三)iOS11应用视图实现按钮的响应(3)
查看>>
微软自然语言理解平台LUIS:从零开始,帮你开发智能音箱
查看>>
Centos创建用户
查看>>
视频列表
查看>>
python2 和 python3 区别
查看>>
cd4与cd8比值的意义
查看>>