• 什么是对象

  对象是一个整体,对外提供一些操作

  • 什么是面向对象

  使用对象时,只关注对象提供的功能,不关注其内部细节;比如jQuery

  • 面向对象编程(OOP)的特点(自己理解的特点:把书本上多态放在类继承里
  1. 封装
  2. 继承:从已有的对象上,继承出新的对象
  • 多重继承
  • 多态
  • 对象的组成
  1. 方法---函数:过程、动态的
  2. 属性---变量:状态、静态的
arr=[,,,,]

//arr是一个对象

arr.length;//属性

arr.push(6);//方法
//变量跟属性本是同一个东西
//var a=12;//变量:自由
//arr.a = 5;//属性:属于一个对象
//函数
function show(){ }
//方法:属于一个对象的
arr.fn=function(){ }
  • 简单解释一下this指向
//针对array
var arr=[,,];
arr.show=function(){
//this:是当前的方法,属于谁
alert(this)//arr
}
//针对object
var obj = new Object();
obj.aaa=;
obj.show=function(){
alert(this.aaa)//12
}
obj.show();
  • 工厂模式构造对象
//其实这个函数就是创建一个对象(用工厂方式构造对象)
//用工厂方式构造对象
//好听点就是:构造函数
function create(name,sex){
var obj = new Object();
//属性
obj.name=name;
obj.sex=sex;
//方法
obj.showName=function(){
alert(this.name)//
}
obj.showSex=function(){
alert(this.sex)//男
}
return obj;
}
var p1=create("","男');
p1.showName();
p1.showSex();
  • 缺点
  1. 没有new
  2. 浪费资源---每个对象都有自己的function
  • 解决缺点
//this:当前方法,属于谁;
//但是函数前面有new的话,this就会失效;
function create(name,sex){
//属性
//var this = newObject();//假想系统帮我们处理了创建对象
this.name=name;
this.sex=sex;
//方法
this.showName=function(){
alert(this.name)//
}
this.showSex=function(){
alert(this.sex)//男
}
//return this;//假想系统帮我们处理了return
}
var p1=new create("","男');
p1.showName();
p1.showSex();
//记住一句话里面有new,外面就不需要new;外面有new,里面就不需要new;
  • 以上解决了new那怎么解决浪费资源呢?看下面
//首先区别一下类,对象(实例)
var arr = new Array();
Array.prototype.sum=function(){
//在Arry这个类上都可以使用sum()
}
//arr对象:真正有功能的东西,是被类构造出来的
//Array类:不具备实际的功能,只能用来构造对象
//所以我理解的就是构造函数就是类,类就是构造函数---只针对js
function Create(name,sex){
//属性
this.name=name;
this.sex=sex;
}
//Create就是类,也是构造函数
Create.prototype.showName=function(){
alert(this.name)//
}
Create.prototype.showSex=function(){
alert(this.sex)//男
}
//记住一句话相同的加在原型里,不同加在构造函数里
var p1=new create("","男');
p1.showName();
p1.showSex();
//混合模式
  • 以上就是优化后的代码---每个人理解不一样只要你自己明白就行

JavaScript面向对象①的更多相关文章

  1. JavaScript学习笔记(三)——this、原型、javascript面向对象

    一.this 在JavaScript中this表示:谁调用它,this就是谁. JavaScript是由对象组成的,一切皆为对象,万物皆为对象.this是一个动态的对象,根据调用的对象不同而发生变化, ...

  2. JavaScript学习总结(三)——this、原型、javascript面向对象

    一.this 在JavaScript中this表示:谁调用它,this就是谁. JavaScript是由对象组成的,一切皆为对象,万物皆为对象.this是一个动态的对象,根据调用的对象不同而发生变化, ...

  3. Javascript面向对象特性实现封装、继承、接口详细案例——进级高手篇

    Javascript面向对象特性实现(封装.继承.接口) Javascript作为弱类型语言,和Java.php等服务端脚本语言相比,拥有极强的灵活性.对于小型的web需求,在编写javascript ...

  4. javascript面向对象系列第四篇——选项卡的实现

    前面的话 面向对象的应用并非只是读几本书那么容易,需要有大量的工程实践做基础才能真正理解并学会使用它.本文将用面向对象的技术来制作一个简单的选项卡 图示说明 由图示结果看到,这是一个非常简单的选项卡. ...

  5. javascript面向对象系列第三篇——实现继承的3种形式

    × 目录 [1]原型继承 [2]伪类继承 [3]组合继承 前面的话 学习如何创建对象是理解面向对象编程的第一步,第二步是理解继承.本文是javascript面向对象系列第三篇——实现继承的3种形式 [ ...

  6. javascript面向对象系列第一篇——构造函数和原型对象

    × 目录 [1]构造函数 [2]原型对象 [3]总结 前面的话 一般地,javascript使用构造函数和原型对象来进行面向对象编程,它们的表现与其他面向对象编程语言中的类相似又不同.本文将详细介绍如 ...

  7. Javascript面向对象(封装、继承)

    Javascript 面向对象编程(一):封装 作者:阮一峰 Javascript是一种基于对象(object-based)的语言,你遇到的所有东西几乎都是对象.但是,它又不是一种真正的面向对象编程( ...

  8. 《javascript面向对象精要》读书笔记

    <javascript面向对象精要> 买这本书的原因主要是因为作者,Nicholas C. Zakas 牛X闪闪的js专家,读过js高程的应该都知道他,而这本书是他的最新力作,感觉也是js ...

  9. 【转】javascript面向对象编程

    摘要:本文本来是想自己写的,奈何花了好长时间写好之后忘记保存,还按了刷新键,一键回到解放前,索性不写了,所以本文是转载的. 面向对象编程是用抽象方式创建基于现实世界模型的一种编程模式,主要包括模块化. ...

  10. javascript面向对象(一):封装

    本文来自阮一峰 学习Javascript,最难的地方是什么? 我觉得,Object(对象)最难.因为Javascript的Object模型很独特,和其他语言都不一样,初学者不容易掌握. 下面就是我的学 ...

随机推荐

  1. centos7 下安装rpm的mysql 5.7

    在centos7下安装mysql5.7 一:下载mysql 去官网上去下载:这里我下载的二进制格式的 https://dev.mysql.com/downloads/mysql/ 去下载对应平台的my ...

  2. 201871010107-公海瑜《面向对象程序设计(java)》第十五周学习总结

    201871010107-公海瑜<面向对象程序设计(java)>第十五周学习总结             项目                            内容   这个作业属于 ...

  3. 201871010118-唐敬博《面向对象程序设计(java)》第十周学习总结

    博文正文开头格式:(2分) 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.co ...

  4. LeetCode 120. Triangle三角形最小路径和 (C++)

    题目: Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjace ...

  5. 数据结构——顺序队列(sequence queue)

    /* sequenceQueue.c */ /* 顺序队列 */ #include <stdio.h> #include <stdlib.h> #include <std ...

  6. C++对象布局

    <C++应用程序性能优化><深度探索C++对象模型>笔记 #include<iostream> using namespace std; class student ...

  7. 【2019.7.25 NOIP模拟赛 T1】变换(change)(思维+大分类讨论)

    几个性质 我们通过推式子可以发现: \[B⇒AC⇒AAB⇒AAAC⇒C\] \[C⇒AB⇒AAC⇒AAAB⇒B\] 也就是说: 性质一: \(B,C\)可以相互转换. 则我们再次推式子可以发现: \[ ...

  8. [LeetCode] 230. Kth Smallest Element in a BST 二叉搜索树中的第K小的元素

    Given a binary search tree, write a function kthSmallest to find the kth smallest element in it. Not ...

  9. javaSript 处理电脑和浏览器pc端缩放对页面的影响

    由于用户的个人习惯或其他原因,可能会调整到电脑上的缩放比例或者浏览器的缩放比例,如果访问页面会看起来比较不好看, 电脑上的缩放: 浏览器上的缩放: 解决方法: function detectZoom( ...

  10. WebSocket--客户端

    WebSocket 是 HTML5 提供的一种在单个TCP连接上进行全双工通讯的协议. WebSocket 使得客户端和服务端通讯,数据交换更加简单,而且允许服务端主动向客户端发送数据.在WebSoc ...