js面向对象怎么理解

<一>、

认识对象。首先要认识对象:在编程中,对象(object)是具体的某一个实例,唯一的某一个个体。如:电脑就是一个统称,而你面前的这一台电脑就是对象。而电脑的统称在编程中叫做类,概念就是:具有一类相同特征事物的抽象概念。在js中只有对象的概念。没有类的概念,在ECMA6中必须加回来。
对象的语法:(创建对象)
   var obj1 = new Object();
   var obj2 = Object();
  var obj3 = {};
<二>、

在js中面向对象的编程思想是什么呢?直接将生活逻辑映射到我们的编程中。1.分析应用题里的实体。2.分析实体的属性和性能。3.实体之间相互作用得出结果。

<三>、

对象:既可以存储数据,又可以存储函数的结构。
<四>、

用面向对象创建一个人的方法:

  var person = new Object();
  person.name = "blue";
  person.sex = "男";
  person.showName = function(){
    alert("我的名字叫:" + this.name);
  }
  person.showSex = function(){
    alert("我的性别是" + this.sex + "的");
  }

一下是封装函数创造一个人,也叫作使用new构造函数(本质上是构造对象),在JS中的构造函数充当的角色是类的存在。

  function createPerson(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 = createPerson("blue", "男");

<五>、

继承和多态。在JS中一切皆对象。

  继承:从父一级继承到的属性和方法。

1. 原型链继承 继承方法
  for(funcName in Person.prototype){
    Worker.prototype[funcName] = Person.prototype[funcName];
  }
在任何函数上都有一个叫做prototype原型的属性,他是一个对象,如果我们将函数添加给某一个可以创建对象的函数的原型prototype,该函数共享。

2.Object.create 根据原对象,生成一个新对象
  Worker.prototype = Object.create(Person.prototype);

3、直接通过调用构造函数继承
  worker.prototype = new Person();

多态:我自己拓展和重写的属性和方法。

  function Person(name, sex){
    this.name = name;
    this.sex = sex;
  }

  Person.prototype.showName = function(){
    alert(`我的名字是:` + this.name);
  }
  Person.prototype.showSex = function(){
    alert(`我的性别是:` + this.sex);
  }

  function Worker(name, sex, job){
    Person.call(this, name, sex);
    this.job = job;
  }
  Worker.prototype.showJob = function(){
    alert(`我的工作是` + this.job);
  }
  var w1 = new Worker("red", "女", "画家");
  w1.showName();
  w1.showSex();
  w1.showJob();

<六>、

满足继承、封装、多态的特点叫做面向对象。
理解起来就是:面向对象是一种编程思想,而我们要进行面向对象编程,就必须用到类(ECMA6之前,没有类,用构造函数充当类的存在)和对象语法实现,最终实现的面向对象的代码,拥有继承封装多态的特点。

js面向对象怎么理解的更多相关文章

  1. js面向对象的理解

    ECMAScript 有两种开发模式:1.函数式(过程化),2.面向对象(OOP).面向对象的语言有一个标志,那就是类的概念,而通过类可以创建任意多个具有相同属性和方法的对象.但是,ECMAScrip ...

  2. JS面向对象设计-理解对象

    不同于其他面向对象语言(OO,Object-Oriented),JS的ECMAScript没有类的概念, 它把对象定义为"无序属性(基本值.对象.函数)的集合",类似于散列表. 每 ...

  3. javascript面向对象的理解(一)

    第一次在园子发文: 关于js面向对象的理解: 工厂方式是什么?构造函数是什么?原形链?对象的引用? 1.对象是什么? 在js接触的比较多的就是对象了,比如: var arr = []; arr.num ...

  4. 带你一分钟理解闭包--js面向对象编程

    上一篇<简单粗暴地理解js原型链--js面向对象编程>没想到能攒到这么多赞,实属意外.分享是个好事情,尤其是分享自己的学习感悟.所以网上关于原型链.闭包.作用域等文章多如牛毛,很多文章写得 ...

  5. 新手如何理解JS面向对象开发?

    今天有时间讲讲我对面向对象的理解跟看法,尽量用通俗的语言来表达,多多指教! 如今前端开发已经越来越火了,对于前端开发的要求也是越来越高了,在面试中,经常有面试官会问:你对JS面向对象熟悉吗? 其实,也 ...

  6. js面向对象理解

    js面向对象理解 ECMAScript 有两种开发模式:1.函数式(过程化),2.面向对象(OOP).面向对象的语言有一个标志,那就是类的概念,而通过类可以创建任意多个具有相同属性和方法的对象.但是, ...

  7. 简单粗暴地理解js原型链–js面向对象编程

    简单粗暴地理解js原型链–js面向对象编程 作者:茄果 链接:http://www.cnblogs.com/qieguo/archive/2016/05/03/5451626.html 原型链理解起来 ...

  8. JS面向对象编程(进阶理解)

    JS 面向对象编程 如何创建JS对象 JSON语法声明对象(直接量声明对象) var obj = {}; 使用 Object 创建对象 var obj = new Object(); JS对象可以后期 ...

  9. js面向对象学习 - 对象概念及创建对象

    原文地址:js面向对象学习笔记 一.对象概念 对象是什么?对象是“无序属性的集合,其属性可以包括基本值,对象或者函数”.也就是一组名值对的无序集合. 对象的特性(不可直接访问),也就是属性包含两种,数 ...

随机推荐

  1. JDK14都要问世了,你还在用JDK8吗

    Java开发工具包(JDK)14已进入发布候选阶段,总体功能基本已确定.计划中的标准Java升级将具有新功能,例如JDK Flight Recorder事件流,模式匹配和开关表达式. JDK 14计划 ...

  2. yum 升级php版本

    centos默认安装的php都是 5.3的  ,现在需要 5.6以上的版本 手动安装比较麻烦,直接用yum升级了. 一.准备工作 首先检查当前php版本 #php -v 查看安装的php扩展包 #yu ...

  3. 还是端口回流问题 TCP协议解析

    还是上一篇的问题 在一内部局域网中, client  内网地址为 10.0.0.2     web  服务器内网地址为 10.0.0.1    外网地址为  211.6.15.1    域名为  xx ...

  4. 曹工说Spring Boot源码(19)-- Spring 带给我们的工具利器,创建代理不用愁(ProxyFactory)

    写在前面的话 相关背景及资源: 曹工说Spring Boot源码(1)-- Bean Definition到底是什么,附spring思维导图分享 曹工说Spring Boot源码(2)-- Bean ...

  5. 反弹shell备忘录

    反弹shell备忘录 简单理解,通常是我们主动发起请求,去访问服务器(某个IP的某个端口),比如我们常访问的web服务器:http(https)://ip:80,这是因为在服务器上面开启了80端口的监 ...

  6. NIO-WindowsSelectorImpl源码分析

    目录 NIO-WindowsSelectorImpl源码分析 目录 前言 初始化WindowsSelectorProvider 创建WindowsSelectorImpl WindowsSelecto ...

  7. Javascript 基础学习(五)js 的运算符

    通过运算符可以对一个或多个值进行运算,并且一定有运算结果返回 算数运算符 ​ 算数运算符包括相加(+).相减(-).相乘(*).相除(/).取模(%).任何值与字符串相加都会转换为字符串,做的是字符串 ...

  8. jQuery的核心功能选择器

    选择器是jquery的核心 jquery选择器返回的对象是jquery对象,不会返回undefined或者null,因此不必进行判断 基本选择器: ID选择器  $("#ID") ...

  9. uniapp简易直播

    实验准备 在服务器部署nginx-rtmp作为我们直播推流和拉流的服务器(如果服务商选择七牛,也是直接给地址推流).为了加快部署,我在这一步使用Docker. docker pull tiangolo ...

  10. Mac-MacOS降级(Mac系统降级,系统回退)

    前言 最近把macOS更新到了 macOS Catalina,使用了一段时间后,结合自己的使用环境和体验,感觉 Catalina 不太好用,就想把系统回退到 macOS Mojave,但是平时几乎不用 ...