动态语言类型与鸭子类型 此内容取自JavaScript设计模式与开发实践一书 编程语言按照数据类型大体可以分为2类,一类就是静态类型语言,另一类则是动态类型语言 静态类型语言也可以称之为编译语言,而动态类型语言则称可以之为解释型语言 JavaScript则属于动态类型语言他无需定义时候声明类型给实际编码带来了极大的灵活性,且可以尝试调用任何对象的任意方法, 而无需考虑它原本是否被设计为拥有该方法. 这其实也叫做鸭子类型 鸭子类型的定义为:如果它走起来像鸭子,叫起来也像鸭子,那么它就是鸭子 举个小…
多态 多态的实际含义:同一操作作用与不同的对象上面,可以产生不同的解释和不同的执行结果,就是说,给不同的对象发送同一个消息 的时候,这些对象会根据这个消息分别给出不同的反馈 代码如下: class Duck{}; class Chicken{}; let make = function(animal){ //instanceof运算符用来判断一个构造函数的prototype属性所指向的对象是否存在另外一个要检测对象的原型链上 if(animal instanceof Duck){ console…
JavaScript 设计模式基础(一) 原型模式 在以类为中心的面向对象编程语言中,类和对象的关系就像铸模和铸件的关系,对象总是从类中创建.而原型编程中,类不是必须的,对象未必从类中创建而来,可以拷贝另一个对象而变成新对象 从设计模式角度讲,原型模式是用于创建对象的一种模式,找到一个对象,不需要关心对象的具体类型,通过克隆来创建一个一模一样的对象. 原型不单是一种设计模式,也被称为编程泛型 原型编程中有一个重要特性:访问对象中某个属性或方法,而对象本身没有对应属性和方法,那么它会从自己的原型链…
模式的起源 模式 起源于建筑学.20世纪70年代,哈佛大学建筑学博士Christopher Alexander和他的团队花大约20年,来研究为解决同一个问题而设计出的不同建筑结构,从中发现那些高质量设计中的相似性,并且用模式来指代这种相似性: JavaScript是一门面向对象语言[1][2][3],设计模式通过对面向对象的特征封装.继承.组合.多态等技术的反复使用,提炼出可复用的面向对象设计技巧. 请查阅以下详情: JavaScript 设计模式基础(二) 个人博客…
javascript 设计模式 第1章 灵活的语言--JavaScript 初级程序员接到一个验证表单功能的任务,需要验证用户名.邮箱.密码等 ** 此文章内容大部分来自 <javascript设计模式>一书,请支持正版.** 1.简单的验证check.js 代码如下: function checkName(){ //验证姓名 } function checkEmail(){ //验证邮箱 } function checkPassword(){ //验证密码 } 这段代码功能可以实现,但是创建…
对于前端程序员来说闭包还是比较难以理解的, 闭包的形成与变量的作用域以及变量的生产周期密切相关,所以要先弄懂变量的作用域和生存周期. 1.变量作用域 变量的作用域,就是指变量的有效范围,通常我们指的作用域就是函数作用域(毕竟全局的作用域没有要指的意义,关键哪都能访问) 声明变量的时候推荐使用es6语法中的let 和const 可以避免var声明变量出现的一些不必要的错误而且let声明变量只作用于当前作用域 避免使用不带var 或者let直接声明变量,可能会导致命名冲突. 2.变量生存周期 除了变…
1.this的指向 除去不常用的with和eval,具体应用中this指向大概能分为4种情况分别是 1.作为对象的方法调用. 2.作为普通函数的方法调用. 3.Function.prototype.call或Function.prototype.appy 1.如果作为对象方法的调用,this是指向该对象: let obj = { objName:'obj', objThis(){ alert(this.objName); } } obj.objThis(); 输出如下: 对象obj里面的方法ob…
Javascript是越来越厉害了,一统前后端开发.于是最近把设计模式又看了一遍,顺便做了个笔记,以方便自己和他人共同学习. 笔记连载详见:http://www.meteorcn.net/wordpress/2015/07/17/笔记-javascript设计模式-目录/ 笔记 Javascript设计模式 目录 综述: 1. Javascript设计模式本身没有什么技术含量,无非是用动态特性存取现有功能而已 2. 技术基础就是面向对象的实现与理解 3. 绝大多数模式是按功能区分的,明白了Jav…
今天,我拿到了张容铭写的这本<JavaScript设计模式>这本书,开始了关于JavaScript更深一点的学习. 看到这本书开始的时候,虽然之前通过看书.一些比较好的视频的讲解,对JavaScript有了基础的认识,但是,在看到书的内容的时候,我内心还是有一种自己差的十万八千里的感觉,之前的代码写法不行,使用全局变量.全局函数,只是面向过程的编程的方法,扩展性.可重用性太低.以后我将每天更新博客,将自己所学每一种设计模式都po出来,我要自己看到自己的进步!!加油! 今天的内容是————面向对…
作者 | Jeskson来源 | 达达前端小酒馆 1 主要学习JavaScript中的六大原则.那么六大原则还记得是什么了吗?六大原则指:单一职责原则(SRP),开放封闭原则(OCP),里氏替换原则(LSP),依赖倒置原则(DIP),接口分离原则(ISP),最少知识原则(LKP). 单一职责原则开放封闭原则里氏替换原则依赖倒置原则接口分离原则最少知识原则 那么什么是单一职责原则呢?单一职责原则,英文单词为:single responsable princple,原则体现为,一个对象或者是方法只做…