发表于: 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任务四及深度思考。







返回列表 返回列表
评论

    分享到