阅读《js是设计模式》第一章心得

1、明白自己

明白了自己写的代码为什么难懂且臃肿,不方便阅读且效率低。最主要的是为什么整套流程下来只能我一个人写,因为这样的代码根本没有团队力,协同能力差。对js理解的不过透彻。

2、真正的学会对象与类的区别

类 :对一群具有相同特征的对象的集合的描述;
对象:真实存在的对象个体;

比如人类,指的是一个范围; 对象:比如某个人,指的是这个范围中具体的对象。

Javascript中的function作为构造函数时,就是一个类,搭配上new操作符,可以返回一个对象。
当然,要生成一个对象,也可以用字面量的形式,例如var obj = {x: 1, y: function(){} };
类可以理解为一个模板,而对象就是根据这个模板造出来的具体实例。

3、在函数的原型中添加统一添加方法的功能方法

一般不把功能函数封装在原型里面,因为这样会污染全局,造成不必要的开销。所以我会抽象出一个统一的添加方法的功能方法。

例如:

Function.prototype.addMethod=function(name,fn){

  this[name]=fn;

}

如果想添加邮箱验证和姓名验证方法可以这样做

var methods=function(){};

或者

var methods = new Function();

methods.addMethod(‘checkName‘,function(){

  //验证姓名

});

methods.addMethod(‘checkEmail‘,function(){

  //验证邮箱

});

methods.checkName();

methods.checkEmail();

4、函数链式添加方法

在原型中添加功能的方法中添加返回this语句,这样每次添加完一个方法后都会返回methods函数。

Function.prototype.addMethod= function(name,fn){

  this[name]=fn;

  return this;

}

也可以为每个添加的方法返回this。

var methods = function(){};

methods.addMethod(‘checkName‘,function(){

  //验证姓名

  return this;

}).addMethod(‘checkEmail‘,function(){

  //验证邮箱

  return this;

});

methods.checkName().checkEmail();

这是用函数式的调用方式

5、类式的调用方式(链式添加)

Function.prototype.addMethod = function(name,fn){

  this.prototype[name]=fn;

  return this;

}

var Methods = function(){};

Methods.addMethod(‘checkName‘,function(){

  //验证姓名

  return this

}).addMethod(‘checkEmail‘,function(){

  //验证邮箱

  return this

});

但是这时候我们就不能直接使用了,要通过new关键字来创建新的对象了。

var m = new Methods();

m.checkEmail().checkEmail()

两个疑惑:1、函数添加方法的功能方法语句为什么是this[name],为什么是这样写的?

     2、类式添加方法的功能方法语句为什么是this.prototype[name]?这样的话方法不都添加到了原型中去了吗?这样不会污染全局吗?

原文地址:https://www.cnblogs.com/Juaoie/p/9186937.html

时间: 2024-08-30 09:06:53

阅读《js是设计模式》第一章心得的相关文章

阅读《软件工程—理论方法与实践》第一章心得体会

通过对第一章的阅读,软件的划分有了了解,知道了软件是复杂的.不可见的.不断变化的,并且大多数软件是定制的,并不是通过已有构件组装而成的.软件维护是非常困难的,新的修改又会带来新的错误.软件存在多种质量问题,且能成功完成的软件项目的平均率在26%左右.软件工程已关注软件质量为目标,有过程.方法和工具三要素组成.对于软件的质量,对不同的用户角色是不一样的,但他们都有共同的质量要求是可靠性.正确性和有效性.软件工程知识体系被划分10个知识域:软件需求.软件设计.软件构造.软件测试.软件配置管理.软件工

《node.js实战》第一章读后感

第一章:欢迎进入node.js世界 开始简单介绍了nodejs和前端的js一样,都使用了事件触发来完成异步请求的. 然后又简单介绍了nodejs的事件轮询机制 然后用NGINX和Apache的对比来说明异步I/O的事件轮询比有阻塞的多线程的处理能力要强 最后使用node的http模块来搭起了一个简单的服务器和一个流数据的服务器 Got It 1.node是异步单线程非阻塞I/O的JavaScript服务器开发平台. 异步:就像前端ajax一样,等触发了onreadystatechange事件再对

阅读构建之法第一章有感

今天阅读了构建之法第一章,感觉到自己其实玩具的阶段都不到,离研究阶段更是差的有段距离.了解到程序其实只是一个藏在你电脑里的数据结构加算法,要想成为软件还得经历软件工程这一阶段,软件工程便是把系统的.有序的,可量化的方法应用到软件开发,运营和维护上的过程中.首先我要进行软件需求分析,一个成功的软件是要有市场需求作为背景的,没有需求你做的软件就是无用的东西,有了需求然后我们对软件进行设计使之安全 可行 基本满足市场的需求.然后我们便对我们的软件进行测试.最后软件在用户手中运行,但是十全十美的软件是不

第一章心得

第一章 学习Android驱动开发我们首先要了解清楚Android系统构架,它主要包括: 第一层:Linux内核 其主要包括Linux的驱动程序及内存管理.进程管理.电源管理等等程序.Android使用Linux2.6作为其内核. 第二层:c/c++代码库 其主要包括c/c++编写的代码库和Dalivk虚拟机的运行时 第三层:Android SDK API 这也称为Java API层 第四层:应用程序 即指Android的各种UI,所有的Android用户也都要接触,这一层主要还是依靠的第三层依

《Android深度探索》第一章心得体会

<Android深度探索>第一章讲的是Android系统移植与驱动开发概述.Android的系统架构分为四层:Linux内核.C/C++代码库.Android SDK API.应用程序.Android移植的主要工作:移植Linux驱动和移植HAL.学习Linux驱动要准备一个自己熟悉的Linux操作系统,用于开发和测试Linux驱动:准备一块开发板:学习GNU C:学习相关的硬件知识:不断地实践.Linux将存储器和外设分为3大类:字符设备.块设备.网络设备. 通过对第一章的学习,我了解到由于

安卓系统移植和开发第一章心得体会

进入大三第二学期,我们学习了安卓系统的移植和驱动开发,这是我们继上学期安卓嵌入式开发对安卓系统的进一步学习.第一章我们学习了安卓系统的编译和移植实例,首先我们要下载课程所需要的软件环境,现有的环境是一套能正常运行Linux2.6.21的EZ6410硬件系统和移植目标在EZ 6410系统上运行的安卓2.3系统,在移植过程中主要涉及的步骤有,安装Linux安卓的内核,安装交叉工具链,移植内核支持的Ez6410 平台,安装安卓SDK,获得安装安卓系统的根文件系统.设置系统环境,完成安卓正常启动,嵌入式

《Android深度探索》(卷1)HAL与驱动开发 第一章心得体会

本书的第一章讲的是Android系统移植与驱动开发概述. android的系统架构和其操作系统一样,采用了分层的架构.从架构图看,android分为四个层,从高层到低层分别是应用程序层.应用程序框架层.系统运行库层和linux核心层. 1.应用程序: Android会同一系列核心应用程序包一起发布,该应用程序包包括email客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等.所有的应用程序都是使用JAVA语言编写的. 2.应用程序框架 开发人员也可以完全访问核心应用程序所使用的API

JS 精粹(第一章)

先说说JS是容易被误解的语言的观点.从名字上来看,"Java"这似乎暗示着这门语言与Java的关系:好像这门语言是Java的子集,或比Java弱.但实际与Java并无关系,如果说非要有关系,那可以说说一点八卦.当年Netscape确实为了让它快速发展,与Sun公司有过合作:其中为了借大热的Java东风,改名Javascript(原来叫做Livescript).JS第一版仅仅用了10天,未经打磨就广泛使用至今(什么是"网红",这才是"网红").JS

Android深度探索第一章心得

本章主要是对Android和Linux驱动做一个简单的介绍 第一节介绍Android 系统架构,一共分为四层,从下到上依次为: 1.第一层:linux内核,主要包括驱动程序以及管理内存.进程.电源等资源的程序. 2.第二层:C/C++代码库,主要包括Linux的.so文件以及嵌入到APK程序中的NDK代码. 3.第三层:Android SDK API,直接面向应用程序的JAVA APK 4.第四层:应用程序,直接面向最终用户的JAVA应用程序(APK程序) 第二节介绍Android移植的主要工作