【西安分院】简述JS中的面向对象编程

分享人:马扬睿

目录

1.背景介绍

2.知识剖析

3.常见问题

4.解决方案

5.编码实战

6.扩展思考

7.参考文献

8.更多讨论

1.背景介绍

简述JS中的面向对象编程?

在 JavaScript 中,大多数事物都是对象, 从作为核心功能的字符串和数组,到建立在 JavaScript 之上的浏览器 API。你甚至可以自己创建对象,将相关的函数和变量封装打包成便捷的数据容器。理解这种面向对象 (object-oriented, OO) 的特性对于进一步学习 JavaScript 语言知识是必不可少的。这个模块将帮助你了解“对象”,先详细介绍对象的设计思想和语法,再说明如何创建对象。

2.知识剖析

  1. 理解对象以及访问对象的两种表示法
  2. 'this'的含义
  3. 面向对象的程序设计
  4. 构造函数和对象实例
  5. 原型链
  6. prototype 属性
  7. constructor 属性
  8. 原型式继承

对象是什么

                    
                无需属性的集合,其属性可以包含基本值,对象或者函数
                    
                
点表示法
person.age
person.bio()
括号表示法
person['age']

括号表示法一个有用的地方是它不仅可以动态的去设置对象成员的值,还可以动态的去设置成员的名字。

这是使用点表示法无法做到的,点表示法只能接受字面量的成员的名字,不接受变量作为名字。

greeting: function() {
alert('Hi! I\'m ' + this.name.first + '.'); }

关键字"this"指向了当前代码运行时的对象(

var person1 = {
name : 'Chris',
greeting: function() {
alert('Hi! I\'m ' + this.name + '.');
} }

var person2 = {
name : 'Brian',
greeting: function() {
alert('Hi! I\'m ' + this.name + '.');
} }

最基本的 OOP 思想就是我们想要在我们的程序中使用对象来表示现实世界模型, 并提供一个简单的方式来访问它的功能,否则很难甚至不能实现.
对象可以包含相关的数据和代码,这些代表现实世界模型的一些信息或者功能,或者它特有的一些行为.
对于一个人(person)来说,我们能在他们身上获取到很多信息(他们的住址,身高,鞋码,基因图谱,护照信息,显著的性格特征等等),然而,我们仅仅需要他们的名字,年龄,性别,兴趣 这些信息,然后,我们会基于他们的这些信息写一个简短的介绍关于他们自己,在最后我们还需要教会他们打招呼。以上的方式被称为抽象-为了我们编程的目标而利用事物的一些重要特性去把复杂的事物简单化
在javsScript里使用构造函数来定义对象和他们的特征
JavaScript 常被描述为一种基于原型的语言 (prototype-based language)——每个对象拥有一个原型对象,对象以其原型为模板、从原型继承方法和属性。原型对象也可能拥有原型,并从中继承方法和属性,一层一层、以此类推。这种关系常被称为原型链 (prototype chain),它解释了为何一个对象会拥有定义在其他对象中的属性和方法。

prototype 属性:继承成员被定义的地方

继承的属性和方法是定义在 prototype 属性之上的

每个对象实例都具有 constructor 属性,它指向创建该实例的构造器函数。

如何创建一个继承自另一对象的JavaScript对象呢?

3.常见问题

何时在javaScript里使用继承呢?

4.解决方法

在小型项目中或者刚开始学习时 - 因为当不需要对象和继承的时候,仅仅为了使用而使用它们只是在浪费时间而已。但是随着代码量的增大,你就会越来越发现它的必要性。当我们开始创建一系列拥有相似特性的对象时,那么创建一个包含所有共有功能的通用对象,然后在更特殊的对象类型中继承这些特性,将会变得更加方便有用。

5、编码实战

6、扩展思考

对象实战

7、参考文献:

参考一:《JavaScript高级编程设计》

参考二: Javascript 原型链之原型对象、实例和构造函数三者之间的关系

参考三: MDN JavaScript 对象入门

8、更多讨论

谢谢观看

分享人:马扬睿