一、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

四、封装

封装

最新文章

  1. 【腾讯Bugly干货分享】Android Patch 方案与持续交付
  2. Java基础之反射和动态代理
  3. Linux查看CPU和内存使用情况
  4. 如何通过Socket TCP发送并接收一个文件?
  5. Eclipse++Xdebug开发php环境配置
  6. BZOJ 1600
  7. java 练习题
  8. linux笔记:shell基础和bash的基本功能
  9. 嵌入式 H264参数语法文档: SPS、PPS、IDR以及NALU编码规律
  10. Linux 命令之last命令详解
  11. solrCloud+tomcat+zookeeper配置
  12. Swift App项目总结
  13. ABP Zero示例项目问题总结
  14. PHP正则匹配与文件编码关系
  15. Java面试题—初级(4)
  16. Python爬虫入门教程 47-100 mitmproxy安装与安卓模拟器的配合使用-手机APP爬虫部分
  17. mysql新特性
  18. 觉得一篇讲SPFA还不错的文章
  19. hdu5698瞬间移动-(杨辉三角+组合数+乘法逆元)
  20. 自定义控件详解(五):onMeasure()、onLayout()

热门文章

  1. 第八章 监控 Zabbix
  2. ElasticSearch(7)-排序
  3. Two Pointers - leetcode [两指针问题]
  4. SAP HANA创建层次结构的属性视图(Hierarchy Attribute View)
  5. 阅读国外大神对this的分析,自己的总结
  6. 1.1 office安装
  7. linux权限解读
  8. C++笔记(to be cont'd)
  9. MQ队列堆积太长,消费不过来怎么办(转)
  10. 版本控制器:SVN