- 浏览: 532467 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
rgqancy:
终于明白为啥XML里要带jdbcType=XXXX了。
mybatis 需要注意的点 MyBatis 插入空值时,需要指定JdbcType (201 -
rzh0001:
Thanks a lot
mybatis 需要注意的点 MyBatis 插入空值时,需要指定JdbcType (201 -
guji528:
学习了,谢谢
mybatis 需要注意的点 MyBatis 插入空值时,需要指定JdbcType (201 -
AKka:
彻底清楚这个错误的原因了。向楼主学习了。
mybatis 需要注意的点 MyBatis 插入空值时,需要指定JdbcType (201 -
远去的渡口:
武汉小吃,我最爱热干面和鸭脖,想念啊~~
过年时候还学习编程, ...
过年的心情
由于JavaScript的灵活性,可以让每个人按照自己的习惯进行编写代码.有函数式的编程方式,也有现在用的较为广泛的对象字面量.由于面向对象的出现,JavaScript刚开始的函数编程也逐渐演化为类式编程方式.现在我对几种比较熟悉的编程习惯进行简单的说明:
1.对象字面量:
具有JavaScript特色的一种编程方式,以类为单位含有属性name,方法setName和getName.调用方法比较简便person.setname('R'),this由此至终均指向person,person的属性与方法均不私有,可以进行调用.
2.prototype构造器调用模式
也是很常见的编程方式,创建一个Person类,然后利用prototype对类进行扩展,添加方法.与对象字面量最大区别在于,调用该类的方法时,必须先new(跟Java调用类相似).var p = new Person();p.getName();如果不用new,而直接创建,会产生错误.而且这种错误将不会报错,难以发现.错误的产生原因来自于this 指向Person.prototypel,而Person并没有setName方法.
3.利用匿名函数进行函数编程
类的出现,其中一个最大的好处就是降低了全局变量的出现,但是如果你依旧习惯于函数式编程,没关系,只要创建一个匿名函数,进行闭包,就可以再里面进行函数编程,也不需要担心全局变量的出现.如上所看到的var name;在匿名函数外部是无法调用的,然后利用外部的变量来调用内部的函数,或者是变量.可以借此创建私有变量和私有方法.
4.类式编程(不知道取什么名)
与对象字面量很相似,其不同之处在于抛开了this,和可以对方法与属性进行私有.调用方法与对象字面量基本一致.
5.方法链
jQuery就是一个最经典的方法连库,如果还不懂方法链是什么,看看这个例子:
由于每个方法的结尾都是return this;所以产生了方法链式的类.
本人比较熟悉的就是这几种方式了,每个人都有每个人的特色,所以方式也是说不尽的.但是借此,我想探讨以下几个问题:
1.有关于this指针
在建立多种类的时候都用到this,可是this的作用究竟是什么,而其实this在重用和继承上起着很大的作用.我们先看看一个关于继承的例子:
首先建立Person类:
然后在建立一个Children类,并集成Person的所有方法和属性:
这就是继承,然后我们看个简单的函数重用:
看了this的作用之后,想必对this有了新的认识了吧.现在就有疑问了,就是this的该用与不该用,下面在看个简单的例子:
就在一个类里,this却指向2处地方,有时这样总会让人觉得困惑.刚学习的人更会被this弄的晕头转向.而稍稍改变一下写代码的方式:
这样一下来,代码可以更加的清晰了.所以编写代码的时候应该考虑好究竟今后的用途,还有能否重用.如果明确了不进行继承或是重用,个人觉得应该尽可能的避免使用this,更有个比较常出现的问题.如下:
前面讲过,若果不写成var p = new Person();p.setName('tom');该类里的this将会直接指向Person.prototypel.这种错误在编译时,还是运行时都不会报错.有时会造成让人很头痛的问题.所以在编写代码时,我总是很慎重的选用this.
2.类的封装
在Java里,对类的方法或是属性,可以设置为私有,这样就可以避免外部的调用,而JavaScript却不存在这样的设置,看看下面的代码:\
在这个类里,一共有2个方法,分别是init和setName,而我们只希望从init中运行setName,或是以后将会为里面添加的各种方法,而不希望出现:
直接调用setName方法,正确的说,希望setName方法私有,还有name属性私有.避免别的程序员使用你的类时,调用了不想被调用的方法.
那应该怎么对类的封装好呢?试试另一种编程方式吧,看看改版的怎么样:
这样子,就可以讲原本要私有化的方法和属性私有化了,外部无法直接调用了.这也是利用了闭包而达成所需要的方式的.可是这种编程方式不易于读,尤其是新手看到这种代码会很吃力,还有在占用内存方面也要比一般的高些.
好了,暂时先介绍到这里,下次有时间在说说闭包与作用域.
1.对象字面量:
var person = { name:null, setName:function(name){ this.name = name; return this.name; }, getName:function(){ alert(this.name); } }
具有JavaScript特色的一种编程方式,以类为单位含有属性name,方法setName和getName.调用方法比较简便person.setname('R'),this由此至终均指向person,person的属性与方法均不私有,可以进行调用.
2.prototype构造器调用模式
var Person = function(){ this.name = null; } Person.prototype.setName = function(name){ this.name = name; } Person.prototype.getName = function(){ alert(this.name); }
也是很常见的编程方式,创建一个Person类,然后利用prototype对类进行扩展,添加方法.与对象字面量最大区别在于,调用该类的方法时,必须先new(跟Java调用类相似).var p = new Person();p.getName();如果不用new,而直接创建,会产生错误.而且这种错误将不会报错,难以发现.错误的产生原因来自于this 指向Person.prototypel,而Person并没有setName方法.
3.利用匿名函数进行函数编程
(function(){ var name; var setName = function(n){ name = n; } window['person']['setName'] = setName; var getName = function(){ alert(name); } window['person']['getName'] = getName; })()
类的出现,其中一个最大的好处就是降低了全局变量的出现,但是如果你依旧习惯于函数式编程,没关系,只要创建一个匿名函数,进行闭包,就可以再里面进行函数编程,也不需要担心全局变量的出现.如上所看到的var name;在匿名函数外部是无法调用的,然后利用外部的变量来调用内部的函数,或者是变量.可以借此创建私有变量和私有方法.
4.类式编程(不知道取什么名)
var person = function(){ var name = null; return{ setName:function(n){ name = n; }, getName:function(){ alert(name); } } }
与对象字面量很相似,其不同之处在于抛开了this,和可以对方法与属性进行私有.调用方法与对象字面量基本一致.
5.方法链
var Person = function(){ this.name = null; } Person.prototype = { setName:function(name){ this.name = name; return this; }, getName:function(){ alert(this.name); return this; } }
jQuery就是一个最经典的方法连库,如果还不懂方法链是什么,看看这个例子:
var p = new Person(); p.setName('Tom').getName().setName('Ray').getName();
由于每个方法的结尾都是return this;所以产生了方法链式的类.
本人比较熟悉的就是这几种方式了,每个人都有每个人的特色,所以方式也是说不尽的.但是借此,我想探讨以下几个问题:
1.有关于this指针
在建立多种类的时候都用到this,可是this的作用究竟是什么,而其实this在重用和继承上起着很大的作用.我们先看看一个关于继承的例子:
首先建立Person类:
var Person = function(){ this.name = null; } Person.prototype.setName = function(name){ this.name = name; } Person.prototype.getName = function(){ alert(this.name); } Person.prototype.getAge = function(){ var age = this.age || ''; alert(age); }
然后在建立一个Children类,并集成Person的所有方法和属性:
本人比较熟悉的就是这几种方式了,每个人都有每个人的特色,所以方式也是说不尽的.但是借此,我想探讨以下几个问题: 1.有关于this指针 在建立多种类的时候都用到this,可是this的作用究竟是什么,而其实this在重用和继承上起着很大的作用.我们先看看一个关于继承的例子: 首先建立Person类: var Person = function(){ this.name = null; } Person.prototype.setName = function(name){ this.name = name; } Person.prototype.getName = function(){ alert(this.name); } Person.prototype.getAge = function(){ var age = this.age || ''; alert(age); } 然后在建立一个Children类,并集成Person的所有方法和属性: var Children = function(age){ this.name = null; this.age = age; } Children.prototype = new Person(); //继承Person的属性和方法 Children.prototype.ageJudge = function(){ //另外为Children添加新方法 if(this.age > 18){ alert('成年人~'); } else { alert('未满18岁呢~'); } } Children.prototype.getName = function(){ //重写getName方法 var about = this.name + ' ' + this.age; alert(about); } var tom = new Children(12); var ages = tom.getAge(); //12 var judge = tom.ageJudge(); //未满18岁呢~ var setN = tom.setName('Tom'); var get = tom.getName(); //Tom 12 这就是继承,然后我们看个简单的函数重用: var SetColor = function(){ this.style.backgroundColor = '#000'; //this指向window } document.body.onclick = SetColor; //此时this指向body documnet.getElementById('color').onmouseout = SetColor; //this指向documnet.getElementById('color') 看了this的作用之后,想必对this有了新的认识了吧.现在就有疑问了,就是this的该用与不该用,下面在看个简单的例子: var setColor = { init:function(obj){ this.obj = obj; //this指向setColor this.obj.onclick = this.color; }, color:function(){ this.style.backgroundColor = '#000'; //this指向obj } } 就在一个类里,this却指向2处地方,有时这样总会让人觉得困惑.刚学习的人更会被this弄的晕头转向.而稍稍改变一下写代码的方式: var setColor = { init:function(obj){ setColor.obj = obj; setColor.obj.onclick = setColor.color; }, color:function(){ this.style.backgroundColor = '#000'; //this可以方便方法的重用 } } 这样一下来,代码可以更加的清晰了.所以编写代码的时候应该考虑好究竟今后的用途,还有能否重用.如果明确了不进行继承或是重用,个人觉得应该尽可能的避免使用this,更有个比较常出现的问题.如下: var Person = function(){ this.name = null; } Person.prototype.setName = function(name){ this.name = name; } Person.setName('tom'); //错误方式此时setName方法中的this将指向Person.prototypel,Person并没有setName方法 前面讲过,若果不写成var p = new Person();p.setName('tom');该类里的this将会直接指向Person.prototypel.这种错误在编译时,还是运行时都不会报错.有时会造成让人很头痛的问题.所以在编写代码时,我总是很慎重的选用this. 出处:蓝色理想 责任编辑:bluehearts 上一页 JavaScript对象探讨 [2] 下一页 JavaScript对象探讨 [4] ◎进入论坛网页制作、WEB标准化版块参加讨论,我还想发表评论。
这就是继承,然后我们看个简单的函数重用:
var SetColor = function(){ this.style.backgroundColor = '#000'; //this指向window } document.body.onclick = SetColor; //此时this指向body documnet.getElementById('color').onmouseout = SetColor; //this指向documnet.getElementById('color')
看了this的作用之后,想必对this有了新的认识了吧.现在就有疑问了,就是this的该用与不该用,下面在看个简单的例子:
var setColor = { init:function(obj){ this.obj = obj; //this指向setColor this.obj.onclick = this.color; }, color:function(){ this.style.backgroundColor = '#000'; //this指向obj } }
就在一个类里,this却指向2处地方,有时这样总会让人觉得困惑.刚学习的人更会被this弄的晕头转向.而稍稍改变一下写代码的方式:
var setColor = { init:function(obj){ setColor.obj = obj; setColor.obj.onclick = setColor.color; }, color:function(){ this.style.backgroundColor = '#000'; //this可以方便方法的重用 } }
这样一下来,代码可以更加的清晰了.所以编写代码的时候应该考虑好究竟今后的用途,还有能否重用.如果明确了不进行继承或是重用,个人觉得应该尽可能的避免使用this,更有个比较常出现的问题.如下:
var Person = function(){ this.name = null; } Person.prototype.setName = function(name){ this.name = name; } Person.setName('tom'); //错误方式此时setName方法中的this将指向Person.prototypel,Person并没有setName方法
前面讲过,若果不写成var p = new Person();p.setName('tom');该类里的this将会直接指向Person.prototypel.这种错误在编译时,还是运行时都不会报错.有时会造成让人很头痛的问题.所以在编写代码时,我总是很慎重的选用this.
2.类的封装
在Java里,对类的方法或是属性,可以设置为私有,这样就可以避免外部的调用,而JavaScript却不存在这样的设置,看看下面的代码:\
var person = { name:null, init:function(name){ this.setName(name); }, setName:function(name){ this.name = name; return this.name; } } person.init('tom'); //tom
在这个类里,一共有2个方法,分别是init和setName,而我们只希望从init中运行setName,或是以后将会为里面添加的各种方法,而不希望出现:
person.setName('tom'); //tom
直接调用setName方法,正确的说,希望setName方法私有,还有name属性私有.避免别的程序员使用你的类时,调用了不想被调用的方法.
那应该怎么对类的封装好呢?试试另一种编程方式吧,看看改版的怎么样:
var person = function(){ var name = null; var setName = function(n){ name = n; return name; } return{ init:function(n){ setName(n); } } }
这样子,就可以讲原本要私有化的方法和属性私有化了,外部无法直接调用了.这也是利用了闭包而达成所需要的方式的.可是这种编程方式不易于读,尤其是新手看到这种代码会很吃力,还有在占用内存方面也要比一般的高些.
好了,暂时先介绍到这里,下次有时间在说说闭包与作用域.
发表评论
-
html focus 引入 类似微博的效果
2012-09-18 18:01 1371<!DOCTYPE html PUBLIC &q ... -
javascript 类编程(未完)
2010-07-20 18:03 1503最近想总结一下JavaScript类编程,有时间写一点。 J ... -
正则表达式
2010-01-20 14:48 1028正则表达式用于字符串 ... -
insertAdjacentHTML 用法
2010-01-09 21:13 1915insertAdjacentHTML方法示例 添加HTML内 ... -
float margin padding
2009-12-23 16:46 2502今天做网站的时候发 ... -
WEB2.0标准教程:第二天 什么是名字空间
2009-12-14 10:28 1094DOCTYPE声明好以后,接下来的代码是: <html ... -
CSS兼容:如何解决IE7和IE8的BUG
2009-12-14 10:04 2326CSS兼容问题已经是CSS网页布局技术中的重要组成部分,也让 ... -
悟道web标准:前端性能优化
2009-12-14 09:40 1592悟道web标准:前端性能优化 前端性能优化完全是一个技术话题 ... -
用css网站布局之十步实录
2009-12-10 11:32 1303首先需要规划网站,本教程将以下图为例构建网站 其基本布局见 ... -
WEB标准最佳实践:五个需要注意的地方
2009-12-09 21:32 989一、永远使用小写字母 不好的做法: <DI ... -
不要内置JavaScript脚本 并将它置于HTML文档底部
2009-12-09 21:27 1531不要内置JavaScript脚本,这不是1996年了! ... -
javascript uri 编码
2009-10-19 10:53 1959对比 javascript url编码 javascript ... -
javascript 购物车
2009-10-17 13:13 3361购物车相当于现实中超 ... -
doument.execomand 用法
2009-07-11 15:54 13902D-Position 允许通过拖曳移动绝对定位的对象。 ... -
clientX pageX
2009-06-26 15:21 2148screenX:鼠标在显示屏幕上的坐标。 clientX ... -
hasOwnProperty
2009-06-26 11:19 1633JavaScript中hasOwnProperty函数方 ... -
getBoundingClientRect()
2009-06-25 15:16 1301getBoundingClientRect() 来获取页面 ... -
jquery 选择器 使用
2009-06-15 17:01 1487[翻译]jQuery 选择器的使用 ... -
Ext 3.0 core 简要pdf 下载
2009-06-07 11:02 1239今天早上 无意中看到Ext中文 网站有Ext3.0 core ... -
settimeout 返回值
2009-06-07 10:32 2548setTimeout() 方法的返回值是一个唯一的数值,这个数 ...
相关推荐
JavaScript对象是编程语言的核心组成部分,尤其在Web开发中扮演着至关重要的角色。"JavaScript对象参考手册"涵盖了这一主题的广泛内容,旨在为开发者提供全面、深入的理解和实用指南。手册分为20个章节,不仅涉及...
DeePool通过实现JavaScript对象池,为开发者提供了一种优化内存使用、提高程序运行效率的有效手段。尤其在需要大量创建和销毁对象的场景下,使用DeePool可以显著提升性能,减少内存压力。掌握并合理运用DeePool,...
### 深入浅出JavaScript对象模型 #### JavaScript对象的本质 根据ECMA262规范,ECMAScript被定义为一种基于对象的语言而非传统的面向对象语言。这意味着在JavaScript中,对象被视为存储数据的一种大型数组形式,...
- **第四章:继承**:探讨JavaScript中实现继承的不同方式。 - **第五章:封装和私有性**:讲解如何在JavaScript中实现封装以及保护私有数据的方法。 - **第六章:多态**:讨论多态性的概念及其在JavaScript中的应用...
在本文中,我们将深入探讨JavaScript对象的定义、创建方法以及相关的工具和技术。 首先,我们要了解JavaScript对象的本质。对象是由键值对(key-value pairs)构成的集合,这些键可以是字符串或符号,而值可以是...
本小册"JavaScript对象经典小册 chm"深入探讨了JavaScript中的核心概念——对象和数组,旨在帮助开发者更好地理解和掌握这些基础知识。 一、JavaScript对象 1. 对象概述:JavaScript对象是一种数据结构,它由键值对...
JavaScript,作为一种广泛应用...JavaScript 面向对象程序设计——继承与多态.pdf 和 JavaScript 面向对象程序设计——封装.pdf 这两个文档可能深入探讨了这些主题,帮助读者深入理解并掌握JavaScript的面向对象开发。
JavaScript对象模型(Object Model)和执行模型是理解JavaScript工作原理的关键概念。JavaScript是一种基于原型的动态类型语言,其对象模型是其核心特性之一。本文将深入探讨JavaScript的对象模型和执行模型,以及...
这里我们将深入探讨几种常见的创建对象的方式。 1. **构造函数**: JavaScript中的构造函数是一种特殊类型的函数,可以用来创建和初始化一个对象。通过`new`关键字调用构造函数,可以创建一个新的对象实例。例如:...
- JavaScript对象都有一个内置的`__proto__`属性,指向其构造函数的原型。原型是一个对象,可以包含共享的属性和方法。原型链允许对象访问其构造函数原型上的属性和方法。 - 使用`Object.prototype.isPrototypeOf...
本指南的第二版深入探讨了JavaScript的面向对象特性,旨在帮助开发者更好地理解和应用这一编程范式。 JavaScript的面向对象主要基于三个核心概念:封装、继承和多态。封装是将数据和操作这些数据的方法结合在一起,...
本文旨在探讨JavaScript对象的教学要点,旨在帮助高职软件技术专业的学生更好地理解和掌握JavaScript语言。文章从对象的概念、使用原生对象、原型链的理解、自定义对象的创建和新的语法规范五个方面对JavaScript对象...
本参考手册将深入探讨JavaScript的核心对象,帮助你更好地理解和运用这些对象。 一、全局对象Global 全局对象在JavaScript中扮演着特殊的角色,它是所有变量和函数的默认作用域。`window`是浏览器环境下的全局对象...
在JavaScript中,数组和对象是两种非常基础且重要的数据结构,它们被广泛应用于各种场景,如数据存储、逻辑处理和对象表示。这篇文章将深入探讨这两种数据类型,以及相关的操作和工具。 **一、数组** 数组在...
本指南将深入探讨JavaScript中的面向对象特性,包括类、对象、继承、封装和多态性。 1. **对象和对象字面量** JavaScript中的对象是键值对的集合,可以通过对象字面量{}来创建。例如: ```javascript let person...
《JavaScript面向对象精要》这本书不仅介绍了JavaScript面向对象的基础概念,还深入探讨了其实现机制及其在实际开发中的应用。对于希望提高自己JavaScript技能水平的开发者来说,本书是一本不可多得的好书。通过学习...
首先,我们来探讨JavaScript对象的基本概念。在JavaScript中,对象是一种数据结构,它由键值对(key-value pairs)组成,键通常是字符串,而值可以是任何数据类型。对象是通过花括号{}创建的,例如:`var obj = {key...