一、Javascript “类”:

类:在面向对象编程中,类(class)是对象(object)的模板,定义了同一组对象(又称"实例")共有的属性和方法。

Javascript是一种基于对象(object-based)的语言,你遇到的所有东西几乎都是对象。但是,它又不是一种真正的面向对象编程(OOP)语言,因为它的语法中没有class(类)。

但是,我们在javascript中可以模拟出“类” 。 总结的阮一峰的定义类(class)的三种方法

1> 构造函数法

构造函数 模拟"类",在其内部用this关键字指代实例对象。

生成实例的时候,使用new关键字。

类的属性和方法,还可以定义在构造函数的prototype对象之上。

2> Object.create()

Javascript的国际标准ECMAScript第五版(目前通行的是第三版),提出了一个新的方法Object.create()。

用这个方法,"类"就是一个对象,不是函数。

3> 极简主义法

首先,它也是用一个对象模拟"类"。在这个类的内部,定义一个构造函数createNew(),用来生成实例。

然后,在createNew()的内部,定义一个实例对象,把这个实例对象作为返回值。

二、Javascript 继承

在基于类的语言中,对象是类的实例,并且类可以从另一个类继承,如Java;JavaScript则是一门基于原型的语言,以原型链实现继承,其对象可以直接继承另一对象

Javascript语言的继承机制。            总结自阮一峰的继承机制的设计思想 构造函数的继承 非构造函数的继承    汤姆大叔 强大的原型和原型链

它没有"子类"和"父类"的概念,也没有"类"(class)和"实例"(instance)的区分,全靠一种很奇特的"原型链"(prototype chain)模式,来实现继承。

JavaScript 不包含传统的类继承模型,而是使用 prototype 原型模型  来 实现继承。

涉及到继承这一块,Javascript 只有一种结构,那就是:对象。

在 javaScript 中,每个对象都有一个指向它的原型(prototype)对象的内部链接。(使用构造函数法模拟类 函数仍是 对象)这个原型对象又有自己的原型,直到某个对象的原型为null 为止(也就是不再有原型指向),组成这条链的最后一环。这种一级一级的链结构就称为原型链(prototype chain)。

原型

Javascript中创建的每个函数都有一个prototype属性,这个属性是一个指针,指向一个对象,这个对象的作用即是包含可以由特定类型实例共享的属性和方法,这个对象就是函数的原型对象。

默认情况,所有的原型对象都会有一个constructor属性,这个属性包含一个指向prototype属性所在函数的指针。

调用构造函数创建一个新实例后,实例的内部将包含一个指向构造函数原型对象的指针,在ECMA-262中定义此指针为[[Prototype]],并不能被显式的访问到,而在Firefox,Safari和Chrome中每个对象上有一个__proto__属性。

__proto__显示的是实例与构造函数原型对象间的关系,而非实例与构造函数间的关系。

继承的实现:

2.1 构造函数的继承

1.构造函数绑定

2.2 非构造函数的继承

三、JavaScript  闭包

闭包是指函数有自由独立的变量。换句话说,定义在闭包中的函数可以“记忆”它创建时候的环境。

闭包允许将函数与其所操作的某些数据(环境)关连起来。

在循环中创建闭包:一个常见错误  未完待续 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Closures

四、封装

封装

JavaScript “类”定义 继承 闭包 封装的更多相关文章

  1. JavaScript 类式继承与原型继承

    交叉着写Java和Javascript都有2年多了,今天来总结下自己所了解的Javascript类与继承. Javascript本身没有类似Java的面向对象的类与继承术语,但其基于原型对象的思想却可 ...

  2. javascript类式继承最优版

    直接看实例代码: <!doctype html> <html lang="en"> <head> <meta charset=" ...

  3. js原生设计模式——2面向对象编程之继承—原型继承(类式继承的封装)

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  4. 详谈Javascript类与继承

    本文将从以下几方面介绍类与继承 类的声明与实例化 如何实现继承 继承的几种方式 类的声明与实例化 类的声明一般有两种方式 //类的声明 var Animal = function () { this. ...

  5. javascript“类”与继承总结和回顾

    Javascipt语法不支持"类"(class)[es6已经支持],但是有模拟类的方法.今天我主要谈谈Javascipt中模拟“类”的方法及js中继承的总结和回顾. js中实现“类 ...

  6. python 类定义 继承

    0 前言 系统:win7 64bit IDE : python(x,y) 2.7.6.1 IDE集成的解释器:Python 2.7.6 (default, Nov 10 2013, 19:24:18) ...

  7. javascript类式继承模式#4——共享原型

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. javascript类式继承模式#3——借用和设置原型

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. javascript类式继承模式#2——借用构造函数

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

随机推荐

  1. Oracle客户端的安装

    首先Orcale的安装应该是很简单的,安装不好只是部熟悉,在其中遇见的一些问题记录下来,如果以后忘记了还可以看看. 首先最大的问题是安装客户端的时候要安装32位的,不管你的操作系统是32位还是64位的 ...

  2. cmake+qt+qtcreator的配置,解决Q_OBJECT的问题

    1.如果在编译qt项目的时候,一般头文件里都有Q_OBJECT,但是用cmake来编译的时候,就会报错,那么怎么解决呢? 解决的办法就是要在cmake里面写好配置 命令,再编译的时候,就不会报错了,写 ...

  3. Textarea自适应高度 JS实现,兼容IE6\7\8\9\10\11

    <!DOCTYPE html> <html> <head> <title>autoresizing textarea</title> < ...

  4. sql server 查询表基本信息sql

    SELECT c.name,t.name TYPE,c.max_length,c.precision,c.scale,p.value FROM sys.systypes t INNER JOIN sy ...

  5. Session小解

    Session特点: 1.Session保存在服务器端,为了获得更高的存取速度,一般把Session保存在内存当中: 2.每个用户都有一个独立的Session,为了避免大量用户访问服务器导致内存溢出, ...

  6. IIS优化服务器性能导致QuartZ任务未运行

    问题: IIS 为优化服务器性能,会自动对它认为休眠的应用程序进行资源回收,资源回收将会导致网站应用程序关闭. 解决方案: 1.  设置闲置超时为0,固定回收时间间隔为0,即IIS不主动回收闲置进程 ...

  7. QT自绘标题和边框

    在QT中如果想要自绘标题和边框,一般步骤是: 1) 在创建窗口前设置Qt::FramelessWindowHint标志,设置该标志后会创建一个无标题.无边框的窗口. 2)在客户区域的顶部创建一个自绘标 ...

  8. Hibernate5--课程笔记5

    关联关系映射: 关联关系,是使用最多的一种关系,非常重要.在内存中反映为实体关系,映射到DB中为主外键关系.实体间的关联,即对外键的维护.关联关系的发生,即对外键数据的改变. 外键:外面的主键,即,使 ...

  9. java设计模式(三)

    单例模式在一个jvm中有且仅有一个对象(1)内部静态类实现 class Singleton{ /*构造方法私有 防止实例化*/ private Singleton(){}; public static ...

  10. 部署到IIS后出现ORA-12560的解决办法

    同事电脑IIS运行网站,出现ORA-12560错误,问了度娘半天都没问出个结果,最终通过bing找到了解决办法,如下: 1.按照常规方法将oracle client安装目录授权给network ser ...