H5W3
当前位置:H5W3 > 其他技术问题 > 正文

JS语言实现面向对象的方式

JS语言实现面向对象的方式

1 前面已经证明了JS是支持面向对象的——具有面向对象式程序构造术
2 因为它支持OO的两大特征:封装独立 的计算对象,和对相似对象间进行 行为抽象,再共享;
3 然,JS实现面向对象技术的方式,和 原生OO语言(例如JAVA)有不同
4 JS的灵活对象技术之一——自由堆闭包 支持 对象封装;原型对象技术 支持 行为抽象
5 那 具体 JS 如何实现 对象封装,和 行为抽象的呢?

程序构造任务与OO构造技术

「技术」是针对「任务」的,我们可通过 程序构造任务,来了解 构造技术的特征。
不同构造术特征,但完成一样的任务,例如类继承和原型继承

JS 的OO构造术具体是如何完成构造任务的

工程构造任务,例如将专业相关的任务独立(私有)为构件;再,将相似的两个构件提纯抽象模板(类),再将需要派生具体的构件;

第一个任务:私有独立封装的 计算对象 的创建

程序的结构特点有不同(专用通用结构,动态变化关系等),它的专业构件的创建方式也可有不同的方式

针对不同构建任务,JS有三种不同 创建方式:
第一,字面量,创建单例,临时一次性对象;这针对一些轻便计算任务的需要;
第二,new 构造函数,创建多个实例;将函数分为 构造函数,和一般函数方法;
第三,Object.create(),从别的对象上继承计算行为,其实就是“类”了

类实例化——函数的构造调用

字面量对象与其是对象,不如说是个灵活的数据结构容器(只是数据),因为它没有封装性;所以JS的封装是通过 函数的构造式调用(Constructor invocations )实现的。

If a function or method invocation is preceded by the keyword new , then it is a
constructor invocation.
Constructor invocations differ from regular function and method invocations in their handling of arguments, invocation context, and return value.
处理参数,调用上下文,和返回值 的不同

1处理参数上,可以忽略括号
var o = new Object();
var o = new Object;

2 调用上下文上,创建新对象作为函数的this引用
3 构造函数的 原型 用作 新对象的 原型
A constructor invocation creates a new, empty object that inherits from the
prototype property of the constructor. Constructor functions are intended to initialize
objects and this newly created object is used as the invocation context, so the con-
structor function can refer to it with the this keyword.

第二个任务:抽象基类

1 原型树或原型链
In addition to their set of properties, most objects
also have a prototype. A prototype is another object that is used as a fallback
source of properties. When an object gets a request for a property that it does
not have, its prototype will be searched for the property, then the prototype’s
prototype, and so on.
2 Object.create()

##只有技术特征(不讲任务) 的技术观
1例如 this的妙解(函数内的this的使用) – 任务 > 函数的传递,因为通用,比较类更灵活的复用代码
2 闭包的概念 – 任务 > 就是用类创建对象实例
3

Describe your new note here.

本文地址:H5W3 » JS语言实现面向对象的方式

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址