本文介绍下js中OOP的一些用法:

由上图可得:

1.typeof null结果是object,所以需要用与运算符再次判断是否为空。

2.构造器实现重载后,可依序传入参数或传入对象。

由上图可得:要实现链式调用,需要在函数中返回this。

由上图可得:

1.由于不能直接new出抽象类的对象,可以通过throw new Error的方式来实现。

2.detect、stop、init函数前应加上prototype。

3.用Object.create(DetectorBase.prototype)来实现类的继承。

由上图可得:

1.可在构造器内部使用Object.defineProperty定义并限定属性。

2.用Object.seal方法可以阻止类的属性扩展且使得属性不可配置。

由上图可得:

1.模块化原来是由common.js、sea.js/CMD、require.js/AMD等类库实现的。ES6出现之后,被export、import的语法糖所替代。

2.使用ES5实现模块化的方式如上图。

由上图可得:

1.使用立即执行函数使得内部的变量和函数不会污染全局。

2.使用instanceof对调用构造器的方式进行判断,若不是使用new构造的对象则会报错。

3.先用inherit实现继承再对子类进行扩展。

由上图可得:

1.使用Object.freeze对类和其原型进行封印,阻止被修改。

2.通过定义global对象的属性使得三个Detector类暴露出来。

3.输出的结果为:

JavaScript之OOP的更多相关文章

  1. JavaScript寻踪OOP之路

    上一集中,重点介绍了谁动了你的代码.这里先总结一下:咱们的代码从敲下来到运行出结果,经历了两个阶段:分析期与运行期.在分析期,JavaScript分析器悄悄动了我们的代码:在运行期,JavaScrip ...

  2. JavaScript的OOP编程1

    首先要说的是,javascript其实是可以进行OOP编程的,其次javascript的OOP编程实现方式有多种,我写的这一种只是我测试过,可行的一种 version1 // 父类 function ...

  3. JavaScript 的 OOP 功能解析

    根据JavaScript创始人Brandon Eich 自己的说法,JavaScript 最好的语言构造是: 函数是一等公民 (first class functions) 闭包 (closure) ...

  4. JavaScript面向对象(OOP)

      前  言 JRedu 面向对象程序设计(简称OOP)是现在最流行的程序设计方法,这种方法有别于基于过程的程序设计方法.在写面向对象的WEB应用程序方面JavaScript是一种很好的选择.它能支持 ...

  5. JavaScript原型OOP——你上车了吗?

    .title-bar { width: 80%; height: 35px; padding-left: 35px; color: white; line-height: 35px; font-siz ...

  6. javascript实现OOP编程

    1.首先通过一个函数来实现JS的单继承.使用原型方式来实现继承 (function () { $.extend({ oop: { extend: function (child, father) { ...

  7. JavaScript面向对象OOP思想Class系统

    JavaScript的Class模块,纯天然无依赖,只有2k大小,快速高效,让我们优雅的面向对象... | |目录 1源码:jClass.js 2源码:jClass.min.js 3构建一个类 4访问 ...

  8. JavaScript的OOP编程2

    我做了一个observer的设计模式实现 version1 // -------------------------------------------------- function Subject ...

  9. JavaScript之使用JavaScript模仿oop编程

    第一, 首先,使用关键字function定义一个类 function Shape1(ax,ay) {//此时将function看成声明类的标志 ; ; var init=function () {// ...

随机推荐

  1. Windows 2000 栈溢出 利用异常

    当在一个函数(test)里面自定义了异常处理,如下: 那么在运行时,它会把自定义的异常处理函数MyExceptionhandler()的地址放入栈中(PUSH 004013CC) 然后把fs:[0]的 ...

  2. es6 part 1 //const let

    1. let 命令 ES6 新增了let命令,用来声明变量.它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效. { let a = 10; var b = 1; } a // ...

  3. WIN10怎么查看端口,并杀死进程

    在命令行执行一下命令 netstat -ano | findstr "

  4. 外部 Storage Provider【转】

    如果 Kubernetes 部署在诸如 AWS.GCE.Azure 等公有云上,可以直接使用云硬盘作为 Volume,下面是 AWS Elastic Block Store 的例子: 要在 Pod 中 ...

  5. C++基础--函数模板

    函数模板是通用的函数描述,其使用泛型来定义函数.其实就是有些操作,如果撇开具体的变量的数据类型,其操作是一样的如果我们将这些操作写成一个模板,在调用不同变量的时候就设定好变量类型就可了,后续的操作基本 ...

  6. Nginx负载均衡(转发)

    http://www.cnblogs.com/jalja/p/6117881.html 一.反向代理 正向代理: 客户端要获取的资源就在服务器上,客户端请求的资源路径就是最终响应资源的服务器路径,这就 ...

  7. 快速幂的类似问题(51Nod 1008 N的阶乘 mod P)

    下面我们来看一个容易让人蒙圈的问题:N的阶乘 mod P. 51Nod 1008 N的阶乘 mod P 看到这个可能有的人会想起快速幂,快速幂是N的M次方 mod P,这里可能你就要说你不会做了,其实 ...

  8. Android进阶——多线程系列之wait、notify、sleep、join、yield、synchronized关键字、ReentrantLock锁

    多线程一直是初学者最困惑的地方,每次看到一篇文章,觉得很有难度,就马上叉掉,不看了,我以前也是这样过来的.后来,我发现这样的态度不行,知难而退,永远进步不了.于是,我狠下心来看完别人的博客,尽管很难但 ...

  9. 安装scrapy 爬虫框架

    安装scrapy 爬虫框架 个人根据学习需要,在Windows搭建scrapy爬虫框架,搭建过程种遇到个别问题,共享出来作为记录. 1.安装python 2.7 1.1下载 下载地址 1.2配置环境变 ...

  10. Ubuntu16.04 faster-rcnn+caffe+gpu运行环境配置以及解决各种bug

    https://blog.csdn.net/flygeda/article/details/78638824 本文主要是对近期参考的网上各位大神的博客的总结,其中,从安装系统到跑通程序过程中遇到的各种 ...