JavaScrip的一些原则

2020-09-21 20:46发布

1条回答
aijingda
2楼 · 2020-09-22 08:56

1. 单一职责原则(SRP)

单一职责原则通常指,一个类只有一种功能。但是JavaScript是一门面向对象的语言,没有类的概念,所以单一职责在JavaScript中的含义是:一个对象(方法)只有一种功能。

那么为什么需要单一职责原则呢?

是因为不同功能的代码耦合在一起容易造成混乱,维护起来十分困难,而且不利于单元化测试。将不同职责的代码分离开来,有利于我们定位代码位置,一旦需要修改代码可以一目了然,提高可读性。

当然,单一职责原则也有一些缺点,比如代码会被分得更加细粒度,相互之间的联系也就更加频繁,如果处理不好对象之间的联系,容易违背后面要介绍的 最少知识原则。

单一职责原则要把握好代码分离的度,一些随着需求变化会一起变化的代码有时候可以不分离,比如xhr请求中建立和发送的操作。

2. 最少知识原则(LKP)

最少知识原则是指一个实体应该尽量少地和其他实体发生相互作用,其中实体包括的范围很广,包括:对象、函数、模块、变量等。

那么为什么要有最少知识原则?

这是因为如果实体之间的相互作用很多,那么当其中一个实体发生改动的时候,就会影响其他的实体,牵一发而动全身。

一般来说,实现最少知识原则,我们可以从以下几步入手:

(1) 减少对象之间的联系

尽量采用第三者对象来作为这些对象联系的媒介,同时在单一职责原则下,不能把代码粒度分得太细,要把握有度。

(2) 多采用封装的方式

封装能够建立变量的独立作用域,使得封装的变量与外界没有相互作用,而只暴露一些必要的方法(或者说API)给外界调用,将有可能相互作用的部分大大缩小。

3. 开放-封闭原则(OCP)

大多数时候,当一个程序有良好的设计,往往说明它是符合开放-封闭原则的

开放封闭原则是指对扩展开放,对修改封闭。它的意思是,当我们需要增加需求的时候,我们可以考虑增加代码而不是修改代码。

那么为什么需要开放封闭原则呢?

那是因为我们的代码都会跟着需求进行改动,用了开放封闭原则提高了程序灵活扩展的能力。



相关问题推荐

  • 回答 97
    已采纳

    Js给初学者的印象总是那么的杂而乱,相信很多初学者都在找轻松学习Js的途径。在这里给大家总结一些学习Js的经验,希望能给后来的学习者探索出一条轻松学习Js之路。Js给人那种感觉的原因多半是因为它如下的特点:A:本身知识很抽象、晦涩难懂,如:闭包、内置...

  • 回答 4

    看图:

  • 回答 18

    基本类型( 6种 ):Number ( 数值 ) String ( 字符串 )Boolean ( 布尔 ) Undefined ( 未定义 )Null ( 空 )ES6 - Symbol  ( 唯一 )

  • 回答 19

    JavaScript 使网页增加互动性,使有规律地重复的HTML文段简化,减少下载时间。JavaScript 能及时响应用户的操作,对提交表单做即时的检查,无需浪费时间交由 CGI 验证。JavaScript 的特点是无穷无尽的,只要你有创意。...

  • 回答 18

    timeoutId: 定时器IDfunc: 延迟后执行的函数code: 延迟后执行的代码字符串,不推荐使用原理类似eval()delay: 延迟的时间(单位:毫秒),默认值为0param1,param2: 向延迟函数传递而外的参数,IE9以上支持setInterval: 以固定的时间间隔重复调用一个函...

  • 回答 15

    Number类型String类型Boolean类型Undefined类型Null类型

  • 回答 14

    空格在ASCII中的值为32,空字符为0,可本人觉得不就是都是为空的吗,没有什么区别?char mychar1,mychar2;mychar1=' ';mychar2='\0';printf(mychar1=%d,mychar2=%d,mychar1,mychar2);//其中mychar1=32;mychar2=0;...

  • 回答 16

    1.变量名可以有数字0~9、大小写字母、下划线、美元符$组成。2.变量名不能以数字开头。 当我们以数字为开头时,代码就会出现橙色下划线,代表命名不...3.变量名不允许使用中文。 不能允许使用中文这个就不用多说了吧,不管你在哪找代码来看,代码中...4.区分大小写...

  • 回答 8

    向一个对象数组里面添加新的属性var arry= [{a:11,b:22,c:33,d:44},{a:11,b:0,c:0,d:44},{a:11,b:22,c:99,d:99}];var arry2=[];arry.map(((item, index)=> {arry2.push(Object.assign({},item,{mess1:item.c,mess2:item.d}))}))cons...

  • 回答 2

    我觉得getTopWindow() 应该是他自己写的函数 mask  应该是getTopWindow()函数中 return 出的一个什么玩意show()  jQuery的显示

  • 回答 16

    看上图

  • 回答 9

    如图所示

  • 回答 12

    1、原型对象也是普通的对象,是对象一个自带隐式的 __proto__ 属性,原型也有可能有自己的原型,如果一个原型对象的原型不为 null 的话,我们就称之为原型链 2、 原型链是由一些用来继承和共享属性的对象组成的(有限的)对象链...

  • js选项卡的实现原理2021-06-15 21:48
    回答 6

    如图所示,最简单的选项卡思路:选项卡就是点击按钮切换到相应内容,其实就是点击按钮把内容通过display(block none)来实现切换的。1、首先获取元素。2、for循环历遍按钮元素添加onclick 或者 onmousemove事件。3、因为点击当前按钮时会以高亮状态显示,所以...

  • 回答 4

    1、js截取两个字符串之间的内容:123var str = aaabbbcccdddeeefff; str = str.match(/aaa(\S*)fff/)[1]; alert(str);//结果bbbcccdddeee2、js截取某个字符串前面的内容:123var str = aaabbbcccdddeeefff; tr = str.match(/(\S*)fff/)[1];......

  • 回答 4

    如果是ajax 就直接获取如果是传到一个页面 就再get再在js中使用 就可以获取了。 可以在js中获取一个变量 但是不能写入一段java代码.

没有解决我的问题,去提问