一些记录整理

设计模式的六大原则

1.单一职责原则(SRP)
就一个类而言,应该仅有一个引起它变化的原因,也应该只有一个职责。每一个职责都是变化的一个轴线,如果一个类有一个以上的职责,这些职责就耦合在了一起。这会导致脆弱的设计。当一个职责发生变化时,可能会影响其它的职责。另外,多个职责耦合在一起,会影响复用性。例如:要实现逻辑和界面的分离。

2.开放封闭原则(OC)
软件实体应该是可扩展,而不可修改的。也就是说,对扩展是开放的,而对修改是封闭的。
因此,开放封闭原则主要体现在两个方面:
对扩展开放,意味着有新的需求或变化时,可以对现有代码进行扩展,以适应新的情况。
对修改封闭,意味着类一旦设计完成,就可以独立完成其工作,而不要对类进行任何修改。

3.依赖转换原则
a.高层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象。
b.抽象不应该依赖于具体,具体应该依赖于抽象。

4.里氏转换原则
子类型必须能够替换掉它们的父类型.

5.迪米特法则–最少知识原则(LoD)
如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。
就是说一个对象应当对其他对象有尽可能少的了解,不和陌生人说话。

6.合成/聚合复用原则(CARP)
尽量使用合成/聚合,尽量不要使用类继承。这里的聚合指的是各种对象组合.

一些JavaScript的要点

1.javascript中的所有对象都是从Object.prototype对象克隆出来的.

2.对于”对象把请求委托给它自己的原型”这句话,更好的说法是对象把请求委托给它的构造器的原型

比如function Person(){}是一个构造器函数,它有原型Person.prototype,它的实例var p = new Person();并没有p.prototype属性,而是顺着原型链找到Person.prototype

3.一个对象的proto属性指向这个对象的构造器的prototype,即obj.proto –> Obj.prototype

解释:Obj大写,说明是一个构造器函数.和第二点相似

4.原型属性应该指向一个对象,而不是一个函数!!

如Person.prototype = {…some object…};而不能指向Person.prototype = function a();

5.ECMAScript只使用静态(词法)作用域.函数在创建时就确定了作用域

顺便提下,大量介绍JavaScript的文章都认为只有额外创建的函数才是闭包,这种说法是错误的。实践得出,这种方式是最有效的,然而,从理论角度来说,在ECMAScript中所有的函数都是闭包。

6.在ECMAScript中,闭包中的返回语句会将控制流返回给调用上下文(调用者)。

7.闭包的概念
ECMAScript中,闭包指的是:

从理论角度:所有的函数。因为它们都在创建的时候就将上层上下文的数据保存起来了。哪怕是简单的全局变量也是如此,因为函数中访问全局变量就相当于是在访问自由变量,这个时候使用最外层的作用域。

从实践角度:以下函数才算是闭包:

即使创建它的上下文已经销毁,它仍然存在(比如,内部函数从父函数中返回,在代码中引用了自由变量

8.JavaScript 中,函数的参数传递方式都是按值传递,没有按引用传递的参数。但是 JavaScript 中有保存引用的对象,比如数组.

9.闭包的调用者或者是执行者永远都是window(在浏览器中)

10.函数声明和函数表达式不同的地方在于函数声明会被提升,而函数表达式不会.

11.所以函数在调用时都会传递两个隐式参数:arguments和this.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值