好程序不是写给computer的,而是写给human的。遇到复杂功能,应该想着把它简化、组件化,把小功能封装成小组件,小功能块可以任意的组合得到千变万化的复杂功能。function就可以帮助我们把功能进行封装。那什么是封装呢。要我说,只要把具体实现给打包,对外提供调用接口那就是封装,方法也好、类也好就做了这些事。 javascript中的function可以用来创建方法、也可以用来创建类,实际上我们可以认为是用function来模拟出的类...
我们看到这里继承的概念是多么的直白,“拷贝一个类的prototype 到另外一个类”,好,Code is cheap,看代码: function class1() { } function class2() { } class2.prototype = class1.prototype; class2.moreProperty1 = " class 2 additional string " ; class2.moreMethod1 = function () { alert( " class 2 additional method " ); } /* 这样,首先是class2具有了和class1 一样的prototype,不考虑构造函数,两个类是等价的...
Javascript已经可以模拟出面向对象的封装和继承特性,但是不幸的是Javascript对多态特性的支持非常弱!其它面向对象语言的多态一般都由方法重载和虚方法来实现多态,Javascript也通过这两种途径来实现! 重载:由于Javascript是弱类型的语言,而且又支持可变参数,当我们定义重载方法的时候,解释器无法通过参数类型和参数个数来区分不同的重载方法,因此方法重载是不被支持的!当先后定义了同名的方法的时候,后定义的方法会覆盖先...
很长一段时间以来(这里本人要幸灾乐祸地说),js是“一种点缀的作用,完成很有限的功能,诸如表单验证之类,其语言本身也一直被当作过程化的语言使用,很难完成复杂的功能。”。但是(这里本人要苦大仇深、痛心疾首地说),“而Ajax的出现使得复杂脚本成为必需的组成部分,这就对 JavaScript 程序设计提出了新的要求,很多Ajax应用开始利用JavaScript面向对象的性质进行开发,使逻辑更加清晰。事实上,JavaScript 提供了完善的机制...
1、给DOM对象添加的属性是一个对象的引用。范例:var MyObject = {};document.getElementById(myDiv).myProp = MyObject;解决方法:在window.onunload事件中写上: document.getElementById(myDiv).myProp = null; 2、DOM对象与JS对象相互引用。范例:function Encapsulator(element) { this.elementReference = element; element.myProp = this;}new Encapsulator(document.getElementById(myDiv));解决方法:在onunload事...
with 语句 为一个或一组语句指定默认对象。 用法: with (<对象>) <语句>; with 语句通常用来缩短特定情形下必须写的代码量。在下面的例子中,请注意 Math 的重复使用: x = Math.cos(3 * Math.PI) + Math.sin(Math.LN10); y = Math.tan(14 * Math.E); 当使用 with 语句时,代码变得更短且更易读: 代码如下:with (Math) { x = cos(3 * PI) + sin(LN10); y = tan(14 * E); } this 对象 返回“当前”对象。在不同的地方,this 代表...
代码如下:/** * @author georgewing */ function prepareCheckBox() { document.getElementById("submit").onclick = function() { selectedCheckBox(4); } } function selectedCheckBox(x) { var oInput = document.getElementsByTagName("input"); var iTotal = 0; for(var i=0;i<oInput.length;i++) { if(oInput[i].className == "checkedRadio") { if(oInput[i].checked) { //add x point iTotal = iTotal + x; } else { // ad...
学习英文: Dom:文档对象模型。Document object model Bom:浏览器对象模型。 注:也可以叫窗口对象模型。(window object model.) API:应用编程接口。 注:DOM其实可以看作一种API。 Node:节点。 注:节点分为:元素节点,属性节点,文本节点。 元素节点 包含 属性节点和文本节点。 Dom树: 下面我们直接看 到底怎么操作DOM。 1, 创建元素节点。createElement(): <SCRIPT LANGUAGE="JavaScript"> var a = document.crea...
1.document.write(""); 输出语句 2.JS中的注释为// 3.传统的HTML文档顺序是:document->html->(head,body) 4.一个浏览器窗口中的DOM顺序是:window->(navigator,screen,history,location,document) 5.得到表单中元素的名称和值:document.getElementById("表单中元素的ID号").name(或value) 6.一个小写转大写的JS: document.getElementById("output").value = document.getElementById("input").value.toUpperCase(); 7.JS中的值类型:...
因为函数式编程采用了完全不同的组织程序的方式,所以那些习惯于采用命令式范例的程序员可能会发现函数式编程有点难学。在这篇文章中,您将了解一些关于如何采用函数式风格,用 JavaScript 编写良好的、优美的代码的示例。我将讨论: 函数式编程概念,包括匿名函数、调用函数的不同方法,以及将函数作为参数传递给其他函数的方式。 函数式概念的运用,采用的示例包括:扩展数组排序;动态 HTML 生成的优美代码;系列函数的应用。 ...
你是否知道JavaScript其实也是一个函数式编程语言呢?本指南将教你如何利用JavaScript的函数式特性。 要求:你应当已经对JavaScript和DOM有了一个基本的了解。 写这篇指南的目的是因为关于JavaScript编程的资料太多了但是极少的资料提到了JavaScript的函数式特性。在本指南中,我只会讲解这些基本知识而不会深入其它的函数式语言或这是Lambda算子。 你可以点击所有的例子然后你所看到的代码就会被执行,这样就可以令指南变得具有交...
使用JavaScript框架 在讲述 window 对象的时候,我们提到过,一个框架内的网页也是 window 对象,也就是说,Frame 对象也是 window 对象。用最容易理解的话说,每一个 HTML 文件占用一个 window 对象,包括定义框架的网页(“框架网页”)。在 IE 里用“<iframe>”标记在文档中插入的框架也是 window 对象,但是用“包含网页”的方法(在 HTML 中显示为“<!--webbot bot="include" ...-->”)读取的 HTML 就不占用独自的 windo...
举个例子,比如数据a,一般访问每个数据会用 for(var x=0;x<a.length;x++) { alert(a[x]) } 简洁的写法是 for(var x in a) { alert(a[x]) } 新建数组的简单写法 d=[1,2,3,3,4,3,2,2] 或 d={1,2,3,3,4,3,2,2} 如果字符串,用 d="asfwf,asdf,w,x,,a,sfw,,x,asfw,".split(",") 更简单取字符串c第二个位置开始的内容 有些人会写成 c = c.substring(1,c.length) 其实 c = c.substring(1) 就行了取字符串c第某个位置一个字符 有...
JavaScript的函数式编程的对象本质: function a() { var x="sth"; return b(){ //do with x; } } var c = a(); 等价于 function a() { this.x = "dosth"; this.b = function(){ //do with this.x } } var c = new a(); 但是 1)函数式编程本能地避免无用对象的构造 因为函数式编程鼓励当用到闭包的时候才去调用闭包构造 而面向对象通常事先构造好对象,准备在那里 ...
JavaScript 代码一般最常见的语法格式就是定义函数 function xxx(){/*code...*/},经常有这样的一大堆函数定义。函数名很容易发生冲突,特别是引入多个js文件时,冲突的情况尤为明显。因此也就有引入命名空间的必要。 Javascript 本身没有命名空间的概念,需要用对象模拟出来。 比如定义一个命名空间的类,用于创建命名空间: function NameSpace(){ } 这是一个构造函数,但却不做任何事情,再来下面和评论有关的代码: var commen...