发表于: 2016-08-14 16:08:14

2 2201


今天完成的事情:今天看了一波js

明天计划的事情:明天看js基础

遇到的问题:无

收获:

基于类的关键概念


因此,我们有如下关键概念:


创建一个对象之前,必须声明类,首先有必要界定其类

因此,该对象将由抽象成自身“象形和相似性”(结构和行为)的类里创建

方法是通过了严格的,直接的,一成不变的继承链来处理

子类包含了继承链中所有的属性(即使其中的某些属性是子类不需要的);

创建类实例,类不能(因为静态模型)来改变其实例的特征(属性或方法);

实例(因为严格的静态模型)除了有该实例所对应类里声明的行为和属性以外,是不能额外的行为或属性的。

让我们看看在JavaScript里如何替代OOP模型,也就是我们所建议的基于原型的OOP。


基于原型

这里的基本概念是动态可变对象。转换(完整转换,不仅包括值,还包括特性)和动态语言有直接关系。下面这样的对象可以独立存储他们所有的特性(属性,方法)而不需要的类。


object = {a: 10, b: 20, c: 30, method: fn};

object.a; // 10

object.c; // 30

object.method();

此外,由于动态的,他们可以很容易地改变(添加,删除,修改)自己的特性:


object.method5 = function () {...}; // 添加新方法

object.d = 40; // 添加新属性 "d"

delete object.c; // 删除属性 "с"

object.a = 100; // 修改属性 "а"

 

// 结果是: object: {a: 100, b: 20, d: 40, method: fn, method5: fn};

也就是说,在赋值的时候,如果某些特性不存在,则创建它并且将赋值与它进行初始化,如果它存在,就只是更新。


在这种情况下,代码重用不是通过扩展类来实现的,(请注意,我们没有说类没办法改变,因为这里根本没有类的概念),而是通过原型来实现的。


原型是一个对象,它是用来作为其他对象的原始copy,或者如果一些对象没有自己的必要特性,原型可以作为这些对象的一个委托而当成辅助对象。



返回列表 返回列表
评论

    分享到