渐进式编码规范,一步步从面向过程到面向对象

学习js这么久了,一步步见证着自己的成长,看到别的大牛的代码,一步步去完善自己,今天,我就来通过一个简单的实例来记录自己的进步。

通过输入框输入字符串,来显示输入的字符数量。

1.函数式编程(初出新手村)不建议使用

//面向过程的变成方式,不推荐

window.onload=function(){
	var $=function(id){
		return document.getElementById(id);
	};
	var oInput=$("input_word");
	var getNum=function(){
		return oInput.value.length;
	};
	var render=function(){
		var num=getNum();
		var oSpan=null;
		if(oInput.value.length==0){
			console.log(1);
			var span=document.createElement("span");
			span.className="input_word_num";
			document.body.appendChild(span);
		}else{
			oSpan=document.querySelector(".input_word_num");
			console.log(oSpan);
			oSpan.innerHTML=num+"个字符串";
			}
		};
		oInput.addEventListener("keyup",function(){
			render();
		});
		render();
	}

 2.利用命名空间的方式编程(初出茅庐)优点:避免全局变量污染,缺点:没有私有属性,属性方法对外保留,容易被修改

 1 //命名空间的方式编程,缺少私有属性,所有的属性都可以修改
 2         var strCalc={
 3             input:null,
 4             init:function(config){
 5                 this.input=document.querySelector(config.id);
 6                 this.bind();
 7                 return this;
 8             },
 9             bind:function(){
10                 var self=this;
11                 this.input.addEventListener("keyup",function(){
12                     self.render();
13                 })
14             },
15             getNum:function(){
16                 return this.input.value.length;
17             },
18             render:function(){
19                 if(this.input.value.length==0){
20                     var span=document.createElement("span");
21                     span.className="input_word_num";
22                     document.body.appendChild(span);
23                 }else{
24                     var oSpan=document.querySelector(".input_word_num");
25                     oSpan.innerHTML=this.getNum()+"个字符";
26                 }
27             }
28         };
29         window.onload=function(){
30             strCalc.init({id:"#input_word"}).render();
31         }

3.面向对象式编程(编程入门)

//面向对象版本,可以避免变量污染,以及有自己的私有属性
        var strCalc=(function(){
            var _bind=function(that){
                that.input.addEventListener("keyup",function(){
                    that.render();
                })
            };
            var _getNum=function(that){
                return that.input.value.length;
            };
            var Textnum=function(){
                this.span=null;
            };
            Textnum.prototype.init=function(config){
                this.input=document.querySelector(config.id);
                _bind(this);
                return this;
            };
            Textnum.prototype.render=function(){
                if(this.input.value.length==0){
                    var span=document.createElement("span");
                    span.className="input_word_num";
                    document.body.appendChild(span);
                }else{
                    this.span=document.querySelector(".input_word_num");
                    this.span.innerHTML=_getNum(this)+"个字符串";
                }
            };
            return Textnum;
        })();
        window.onload=function(){
            new strCalc().init({id:"#input_word"}).render();
        }

在编程的道路上有许多需要学习的,每天都能有所进步,生活更充实。祝愿大家事事顺心。——小抠

时间: 2024-10-17 07:05:35

渐进式编码规范,一步步从面向过程到面向对象的相关文章

面向过程,面向对象,函数式对同一个问题的思考方式

我之所以对函数式代码感兴趣是因为函数式代码富有表现力,可以使用简短.紧凑的代码完成工作,同时能对特定的问题给出优雅的解决方案.现代的编程语言不约而同的朝着面向对象.函数式.动态.解释执行的方向发展,例如Ruby,Swift.而另一些语言则更加强调函数式编程,如F#,Scala,这种语言有着强大的类型推断系统,编写的代码洁程度则令人叹为观止. 在F#编写一个两个数相加的函数,在F# Interactive中输入: let add num1 num2=num1*num2;; F# Interacti

.NET 高级架构师0002 架构师之路(1)---面向过程和面向对象

1.引言     机算机科学是一门应用科学,它的知识体系是典型的倒三角结构,所用的基础知识并不多,只是随着应用领域和方向的不同,产生了很多的分支,所以说编程并不是一件很困难的事情,一个高中生经过特定的训练就可以做得到.但是,会编程和编好程绝对是两码事,同样的程序员,有的人几年之后成为了架构师,有的人却还在不停地coding,只不过ctrl-c.ctrl-v用得更加纯熟了.在中国,编程人员最终的归途无外乎两条:一是转向技术管理,它的终点是CTO:二是继续深入,它的终点是首席架构师,成为CEO的人毕

面向过程和面向对象

面向过程和面向对象简介 一 .面向过程与面向对象的区别: 前者是一种谓语和宾语的关系:后者是一种主语和谓语的关系 . 二.面向对象的三个特征: 封装 继承 多态 三.类与对象: 对象又称作实例,是实际存在的该类事物的每个个体.类是对某一类事物的描述,是抽象的.概念上的 定义. 面向对象的设计的重点是类的设计. 四.对象的比较: 1 “= =”运算符与equals()方法的区别: 前者辨别实质是否相等:后者辨别长相是否相等. 五. 实现类的封装性: 1不能让外面的类随意修改一个类的成员变量: 2在

面向过程 VS 面向对象

面向过程 VS 面向对象 编程范式 编程是 程序 员 用特定的语法+数据结构+算法组成的代码来告诉计算机如何执行任务的过程 , 一个程序是程序员为了得到一个任务结果而编写的一组指令的集合,正所谓条条大路通罗马,实现一个任务的方式有很多种不同的方式, 对这些不同的编程方式的特点进行归纳总结得出来的编程方式类别,即为编程范式. 不同的编程范式本质上代表对各种类型的任务采取的不同的解决问题的思路, 大多数语言只支持一种编程范式,当然也有些语言可以同时支持多种编程范式. 两种最重要的编程范式分别是面向过

面向过程与面向对象的本质区别-对面向过程与面向对象的一点感悟

面向过程与面向对象的本质区别 一位计算机界的大师曾说过,"我认为,面向对象的目标从来都不是复用和扩展,而是提供一种处理复杂问题的方法". 面向过程讲究自顶向下逐步求精.找到一个系统的入口然后顺藤摸瓜,分析出每一步以及影响这一步的其他因素,我们就能够定义这个系统. 面向对象认为世界是有很多对象组成的,各个对象之间相互独立,平时并没有什么关系.在某些外力的作用之下对象之间相互协作,表现出一定的行为,最终塑造了这个复杂的世界.面向过程和面向对象都是人们认识和了解这个世界的手段和方法,并无优劣

面向过程和面向对象的区别,方法重载和方法重写的区别

先有面向过程,而后退出面向对象 面向过程和面向对象两者都是软件开发思想,先有面向过程,后有面向对象.在大型项目中,针对面向过程的不足推出了面向对象开发思想. 打个比方 蒋介石和毛主席分别是面向过程和面向对象的杰出代表,这样充分说明,在解决复制问题时,面向对象有更大的优越性. 面向过程是蛋炒饭,面向对象是盖浇饭.盖浇饭的好处就是"菜""饭"分离,从而提高了制作盖浇饭的灵活性.饭不满意就换饭,菜不满意换菜.用软件工程的专业术语就是"可维护性"比较好,

两大编程思想(面向过程,面向对象)

1. 面向过程编程(POP) 面向过程:分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候再一个一个的依次调用就可以了. 例如:把大象装进冰箱(面向过程,就是按照我们分析好的步骤,按照步骤解决问题) 1. 打开冰箱门, 2. 把大象装进去, 3. 关上冰箱门 2. 面向对象编程(OOP) 面向对象:是把事务分解成为一个个对象,然后由对象之间分工与合作. 例如:把大象装进冰箱(面向对象是以对象来划分问题,而不是步骤) 先找出对象,并写出这些对象的功能: 1. 大象 (对象)

面向过程与面向对象的区别-遁地龙卷风

下面例子根据C和Java编写 面向过程与面向对象之间的区别在于认知世界的方式,后者在前者的基础上提供了更高的抽象层次-类. 也就是抽象.封装.继承.多态. 举个例子 输出 小明20岁<=>A,小明打篮球<=>B. 面向过程相当于在类中调用main方法输出A.B public class Test { public static void main( String[] args ) { System.out.println( "小明去上学" ); System.o

essential C++中关于面向过程和面向对象的说明

昨天在阅读essential C++中看到了一个关于面向过程和面向对象的区别的例子,感觉挺好的.记录下来.... 这个例子是关于照相机的.照相机有三个性质,一个是控制位置:通常使用3个浮点数据来表示其坐标:还有一个视角方向的性质:可以使用3个浮点数据来表示其坐标:最后是一个宽高比的性质,可以使用1个浮点数据来表示. 对于面向过程而言,在编程的过程中势必要不断的在相机的抽象的性质和这7个浮点数据之间反复来回.就好比我们定义一座大楼,面向过程就是要不断在建造大楼的砖头进行打交道,这明显和现实生活的思