概述

当大家已经把js的语言基础理解了,然后能够写出一些简单的例子了,这个时候基本上达到了一年工作经验的水平,而自己能够独立的写一些小功能,完成一些小效果,或者临摹修改一些比较复杂的插件的时候差不多就是两年工作经验的水平,这个时候很多js开发者会陷入迷茫或者不自知,基本上会出现两种情况:

1.js好像就这么多东西,公司给我功能我都能写出来写不出来的网上找插件也能看懂,但是自己不会写,想学习又不知道学什么。

2.好像js就那么点儿东西,公司给我的需求我都能写出来,js很简单。但是好像js大牛跟我又离的很远,到底我行不行?

这个时候呢基本上我会推荐学生了解三个东西:

1.js编程方式

2.设计模式

3.算法

每一个东西都会开阔你的思路带你进入一个全新的世界。

好我们从这节课开始我们就先从js编程方式说起。

说到编程方式,js常用的有三种。

1.面向过程

2.函数式编程

3.面向对象编程

第二个并不是大家理解的那样,我们先说1,3.

举个现实例子就明白了。

手动炒菜用的是面向过程式编程,菜就是全局变量,你通过一步一步的修改全局变量,进而影响周边代码,最后产出想要的结果。这个就是面向过程的思想,优点是复合人类基础的思维方式,简单易学,缺点是当事情复杂的时候面向过程步骤太多很难编写和维护。

用高压锅炖排骨就是面向对象是编程,你并不知道高压锅怎么工作的,扔进去食材,点击一个炖排骨按钮调用高压锅的功能,等着吃就行了。优点是大型复杂程序会变的简单,缺点是如果只是简单的逻辑用面向对象显得麻烦,你煮方便面肯定不用高压锅。

多说一句函数是编程是js非常强大也是我最喜欢的,以后再说,我们先说面向对象编程。

1.什么是对象?

​ 还是类比现实生活,对象就是你女朋友,你为什么让她当你女朋友无非两方面。

  1. 属性(长得咋样、人品咋样):长头发、大眼睛、个子高、皮肤白、爱旅游

​ 方法(能干什么、能力如何):炒菜、做饭、洗衣服、赚钱

​ js世界里面对象也是由这两样组成的:属性和方法,不墨迹上个例子

2.如何定义一个对象

  1. var girlFriend = {
  2. //属性:
  3. hair:"long",
  4. eye:"big",
  5. hobby:"travel",
  6. //方法
  7. cook:function(){},
  8. wash:function(){}
  9. };

3.js的面向对象和其它面向对象不同之处

java等语言是典型的面向对象编程,特点是强大复杂,太特么复杂,大家知道这件事就行。不知道建议你去看看typescript代码,体会下。

js 是原型方式,简单、灵活。听不懂没关系,先把这个例子记住,更常见的定义对象的方式。

  1. //属性加载构造函数上
  2. function GirlFriend() {
  3. //属性:
  4. hair:"long",
  5. eye:"big",
  6. hobby:"travel",
  7. }
  8. //方法加在原型上
  9. GrilFriend.prototype.cook = function(){};

先记住会用就行了后续的课程我会讲什么是原型,以及原型继承等特点。

体验javascript之美6:如果你觉得什么都会了或者不知道js学什么了看这里-面向对象编程的更多相关文章

  1. 体验javascript之美第五课 五分钟彻底明白 匿名函数自执行和闭包

    通过文你将学到: 1.闭包是怎么回事儿? 2.闭包的原理和在jquery中的应用 3.从一到面试题彻底理解闭包和垃圾回收机制 4.闭包在jquery中的应用 概述 经常听到闭包这个词儿,或者匿名函数自 ...

  2. JavaScript学习总结【8】、面向对象编程

    1.什么是面向对象编程 要理解面向对象,得先搞清楚什么是对象,首先需要明确一点这里所说的对象,不是生活中的搞男女朋友对象,面向对象就是面向着对象,换在代码中,就是一段代码相中了另一段代码,自此夜以继日 ...

  3. JavaScript之美读书笔记一

    前两天去图书馆借了一本<JavaScript之美>,在书架上无意中看到的,想着那就看看吧. 第一章 原型 有些JavaScript爱好者宣称JavaScript是一种基于原型而不是面向对象 ...

  4. 闭包初体验 -《JavaScript面向对象编程指南》

    下面是我对闭包的理解:(把他们整理出来,整理的过程也是在梳理) 参考<JavaScript面向对象编程指南> 1.首先,在理解闭包之前: 我们首先应该清楚下作用域和作用域链 作用域:每个函 ...

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

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

  6. 从Prototype学习JavaScript面向对象编程

    概述 JavaScript是一种基于对象的编程语言.它是灵活的,既有面向过程(也就是面向函数)的编程,也有面向对象的编程.因此我称它是基于对象的编程语言. 对于JavaScript的面向过程的编程特性 ...

  7. 老生常谈: Javascript 面向对象编程初探(一)--- 封装

    Javascript是一种基于对象(object-based)的语言,你遇到的所有东西几乎都是对象.但是,它又不是一种真正的面向对象编程(OOP)语言,因为它的语法中没有class(类). 那么,如果 ...

  8. 深入解读JavaScript面向对象编程实践

    面向对象编程是用抽象方式创建基于现实世界模型的一种编程模式,主要包括模块化.多态.和封装几种技术.对JavaScript而言,其核心是支持面向对象的,同时它也提供了强大灵活的基于原型的面向对象编程能力 ...

  9. JavaScript学习笔记(十六)——面向对象编程

    在学习廖雪峰前辈的JavaScript教程中,遇到了一些需要注意的点,因此作为学习笔记列出来,提醒自己注意! 如果大家有需要,欢迎访问前辈的博客https://www.liaoxuefeng.com/ ...

随机推荐

  1. Python:PIL(一)——简介

    学习总结自:PIL官方文档 PIL(Python Image Library)是Python的一个图像处理库. 1.简介 PIL库中最重要的类是Image ①从文件中加载Image--open方法 f ...

  2. 分布式多线程 EOFError: Ran out of input

    原因: 在将Queue注册到网上的时候,callable参数使用了lambda匿名函数,而Windows下绑定调用接口不能用lambda QueueManager.register('get_task ...

  3. LeetCode-010-正则表达式匹配

    正则表达式匹配 题目描述:给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.' 和 '*' 的正则表达式匹配. '.' 匹配任意单个字符 '*' 匹配零个或多个前面的那一个元素 所谓匹配 ...

  4. k8s线上某些特殊情况强制删除 StatefulSet 的 Pod 要考虑什么隐患?

    k8s线上某些特殊情况强制删除 StatefulSet 的 Pod 要考虑什么隐患? 考点之什么情况下,需要强制删除 StatefulSet 的 Pod? 考点之如果 StatefulSet 操作不当 ...

  5. 微信小程序两点之间的距离

    1:申请key: https://lbs.qq.com/dev/console/application/mine 网址: https://note.youdao.com/ynoteshare/inde ...

  6. Java基础——final、static关键字

    final关键字是最终的意思,可以修饰成员方法.成员变量.类 特点: 1.修饰方法:表示该方法是最终方法,不能被重写 2.修饰变量:表示变量是常量,不能再次被赋值 3.修饰类:表示类是最终类,不能被继 ...

  7. Spring MVC 实验2-Bean的几种装配方式及基本用法

    实验二:Bean的几种装配方式及基本用法  实验目的: (1)掌握2种基于XML的装配方式:设值注入(Setter Injection)和构造注入(Constructor Injection) . ( ...

  8. 创建一个 20G 的分区,并格式化为 ext4 文件系统

     创建一个 20G 的分区,并格式化为 ext4 文件系统,并完成如下要求: (1)block 大小为 2048,预留空间 20%,卷标为 MYDATA #fdisk /dev/sdb -->n ...

  9. K8S原来如此简单(五)Metrics Server与HPA

    什么是HPA https://kubernetes.io/zh/docs/tasks/run-application/horizontal-pod-autoscale/ 我们前面有通过kubectl ...

  10. windows server 2008r2 在vmware里自动关机

    虚拟机没有激活所以导致自动关机,试试激活它.<wiz_tmp_tag id="wiz-table-range-border" contenteditable="fa ...