发表于: 2019-12-10 21:59:45
1 1078
今日完成:
完成了杀人游戏的基本功能,就差一些样式需要修改下。
中间走了点弯路,在加入天数之后使用数组来代替对象存储一些状态,后面发现行不通。
其实刚开始就想使用对象了,可是发现Js实现面向对象的方式和java不太一样(使用‘类’)。刚开始也没去搞
明白它,想着先实现功能。那现在来总结一下:
在不同的编程语言中,设计者利用各种不同的语言特性来描述对象。
最为成功的是使用‘类’的方式来描述对象,如‘C++’、java等流行的编程语言。这个流派叫做基于类的编程语言。
还有一种就是基于原型的编程语言,它们利用原型来描述对象。javascript就是其中的代表。
“基于类”的编程提倡使用一个关注分类和类之间关系开发模型。在这类语言中,总是先有类,再从类去实例一个化一个对象。类与类之间又可能会形成继承、组合等关系。类又往往与语言的类型系统整合,形成一定的编译时能力。
与此同时,“基于原型”的编程看起来更为提倡程序员去关注一系列对象实例的行为,而后才去关心如何将这些对象,划分到最近的使用方式相似的原型对象,而不是把它们分成类。
基于原型和基于类都能够满足基本的复用和抽象需求,但是适用的场景不太相同。
原型 系统的“复制操作”有两种实现思路:
1、一个是并不真的复制一个原型对象,而是使用新对象持有一个原型的引用。
2、另一个是切实地复制对象,从此两个对象再无关联。
历史上地基于原型语言因此产生了两个流派,显然,JavaScript选择了前一种方式。
JavaScript的原型。
如果抛开JavaScript用于模拟Java类的复杂语法设施(如new、Function Object、函数的prototype属性等),原型系统可以说相当简单,用两条概括:
1、如果所有对象都有私有字段[[prototype]],就是对象的原型。
2、读一个属性,如果对象本身没有,则会继续访问对象的原型,直到原型为空或者找到为止。
这个模型在ES的各个历史版本中并没有很大改变,但从ES6以来,JavaScript提供了一系列内置函数,以便更为方便地访问操纵原型。三个方法分别为:
1、Object.create 根据指定的原型创建新对象,原型可以是null;
2、Object.getPrototypeOf 获得一个对象的原型;
3、Object.setPrototypeOf 设置一个对象的原型。
利用这三个方法,我们可以完全抛开类的思维,利用原型来实现抽象和复用
遇到的问题:
无
收获:
学习了解了js的对象
明日计划:
完成js任务四及深度思考。
评论