什么是面向对象编程
用对象的思想去写代码,就是面向对象编程
过程式写法
面向对象写法
我们一直都在使用对象
数组 Array 时间 Date
面向对象编程(OOP)的特点
抽象:抓住核心问题
封装:只能通过对象来访问方法
继承:从已有对象上继承出新的对象
多态:多对象的不同形态
对象的组成
方法(行为、操作)——函数:过程、动态的
属性——变量:状态、静态的
创建第一个面向对象程序
为对象添加属性和方法
Object对象
this指向
创建两个对象 : 重复代码过多
<script> //var obj = {}; var obj = new Object(); //创建了一个空的对象 obj.name = '小明'; //属性 obj.showName = function(){ //方法 alert(this.name); }; obj.showName(); var obj2 = new Object(); //创建了一个空的对象 obj2.name = '小强'; //属性 obj2.showName = function(){ //方法 alert(this.name); }; obj2.showName(); </script>
优化面向对象,来封装函数(在面向对象中叫做工厂方式)
<script> //工厂方式 : 封装函数 function createPerson(name){ //1.原料 var obj = new Object(); //2.加工 obj.name = name; obj.showName = function(){ alert( this.name ); }; //3.出场 return obj; } var p1 = createPerson('小明'); p1.showName(); var p2 = createPerson('小强'); p2.showName(); </script>
工厂方式
面向对象中的封装函数
改成与系统对象类似写法
首字母大写
New 关键字提取
This指向为新创建的对象
构造函数
用来创建对象的函数,叫做构造函数
存在的问题
对象的引用
浪费内存
-----------------------------------------------------------------------------------------------
//当new去调用一个函数 : 这个时候函数中的this就是创建出来的对象,
而且函数的的返回值直接就是this啦(隐式返回)
//new后面调用的函数 : 叫做构造函数
------------------------------------------------------------------------------------------------
<script> //当new去调用一个函数 : 这个时候函数中的this就是创建出来的对象,而且函数的的返回值直接就是this啦(隐式返回) //new后面调用的函数 : 叫做构造函数 function CreatePerson(name){ this.name = name; this.showName = function(){ alert( this.name ); }; } var p1 = new CreatePerson('小明'); //p1.showName(); var p2 = new CreatePerson('小强'); //p2.showName(); alert( p1.showName == p2.showName ); //false var arr = new Array(); var date = new Date(); </script>
对象的引用
/*var a = [1,2,3]; var b = [1,2,3]; alert( a == b ); //false*/ //var a = 5; //var b = a; //b += 3; ////alert(b); //8 //alert(a); //5 基本类型 : 赋值的时候只是值的复制
//var a = [1,2,3]; //var b = a; //b.push(4); ////alert(b); //[1,2,3,4] //alert(a); //[1,2,3,4] 对象类型 : 赋值不仅是值的复制,而且也是引用的传递
//var a = [1,2,3]; //var b = a; //b = [1,2,3,4]; //有赋值,就重新生成了一块地址 ////alert(b); //[1,2,3,4] //alert(a); //[1,2,3]
//var a = 5; //var b = 5; // //alert(a == b); //基本类型 : 值相同就可以
//var a = [1,2,3]; //var b = [1,2,3]; //alert( a == b ); //false //对象类型 : 值和引用都相同才行
var a = [1,2,3]; var b = a; alert( a==b ); //true
原型-prototype
概念
重写对象方法,让相同方法在内存中存在一份(提高性能)
学习原型
类比 : CSS中的Class
通过原型改写工厂方式
原则
相同的属性和方法可以加载原型上
混合的编程模式
总结面向对象写法
构造函数加属性,原型加方法
<script> //原型 : 去改写对象下面公用的方法或者属性 , 让公用的方法或者属性在内存中存在一份 ( 提高性能 ) //原型 : CSS中的class //普通方法 : CSS中的style //原型 : prototype : 要写在构造函数的下面 /*var arr = [1,2,3,4,5]; var arr2 = [2,2,2,2,2]; arr.sum = function(){ var result = 0; for(var i=0;i<this.length;i++){ result += this[i]; } return result; }; arr2.sum = function(){ var result = 0; for(var i=0;i<this.length;i++){ result += this[i]; } return result; }; //alert( arr.sum() ); //15 //alert( arr2.sum() ); //10*/ //原型的写法 var arr = [1,2,3,4,5]; var arr2 = [2,2,2,2,2]; Array.prototype.sum = function(){ var result = 0; for(var i=0;i<this.length;i++){ result += this[i]; } return result; }; alert( arr.sum() ); //15 alert( arr2.sum() ); //10 </script>
把工厂方式改写成原型的写法
/当new去调用一个函数 : 这个时候函数中的this就是创建出来的对象,而且函数的的返回值直接就是this啦(隐式返回) //new后面调用的函数 : 叫做构造函数 function CreatePerson(name){ this.name = name; } CreatePerson.prototype.showName = function(){ alert( this.name ); }; var p1 = new CreatePerson('小明'); //p1.showName(); var p2 = new CreatePerson('小强'); //p2.showName(); alert( p1.showName == p2.showName ); //true
最后面向对象的写法
<script> function 构造函数(){ this.属性 } 构造函数.原型.方法 = function(){}; var 对象1 = new 构造函数(); 对象1.方法(); </script>
相关推荐
在提供的资源中,《代码之美》PDF文件可能包含了关于编程实践和代码风格的指导,而《Javascript面向对象编程》PPT可能更具体地阐述了JavaScript OOP的细节和示例。学习这些材料将有助于深入理解JavaScript的面向对象...
JavaScript作为一门浏览器语言的核心思想;面向对象编程的基础知识及其在... 《JavaScript面向对象编程指南》着重介绍JavaScript在面向对象方面的特性,展示如何构建强健的、可维护的、功能强大的应用程序及程序库
《JavaScript面向对象编程指南》内容包括:JavaScript作为一门浏览器语言的..., 《JavaScript面向对象编程指南》着重介绍JavaScript在面向对象方面的特性,展示如何构建强健的、可维护的、功能强大的应用程序及程序库。
JavaScript是一种广泛...通过深入学习这本《JavaScript面向对象编程指南(第2版)》,开发者不仅能掌握JavaScript的面向对象编程基础,还能了解到实际项目中如何有效地运用这些知识,提升编程技巧和解决问题的能力。
### JavaScript面向对象编程详解 #### 一、引言 JavaScript作为一种广泛使用的脚本语言,在Web开发领域占据着举足轻重的地位。尽管JavaScript本质上是一种基于原型的语言,但它也支持面向对象编程的一些特性,使得...
总而言之,学习现代JavaScript面向对象编程,有助于开发者在认识这门语言演化的基础上,运用面向对象的设计和编程模式来构建更加健壮和可维护的JavaScript应用程序。同时,测试和调试是保证代码质量不可或缺的环节,...
下面将详细探讨JavaScript面向对象编程的基本原理、特性以及实际应用。 1. **类与对象** - 在JavaScript中,对象是键值对的集合,可以通过字面量语法或构造函数创建。例如: ```javascript const person = { ...
JavaScript面向对象编程指南是完整的扫描版...
javascript面向对象编程指南 2nd英文版,英文名:Object-Oriented JavaScript。 What you will learn from this book The basics of object-oriented programming, and how to apply it in the JavaScript ...
JavaScript面向对象编程.pdf
在JavaScript面向对象编程中,随着Web2.0和Ajax技术的普及,JavaScript的角色从简单的表单验证扩展到了复杂的数据交互和页面动态更新。采用面向对象的编程风格可以使代码结构更加清晰,便于管理和维护。例如,...
JavaScript 面向对象 编程指南 完整扫描版