我们看到这里继承的概念是多么的直白,“拷贝一个类的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 提供了完善的机制...
Java代码 代码如下://第1种写法 function Circle(r) { this.r = r; } Circle.PI = 3.14159; Circle.prototype.area = function() { return Circle.PI * this.r * this.r; } var c = new Circle(1.0); alert(c.area()); Java代码 代码如下://第2种写法 var Circle = function() { var obj = new Object(); obj.PI = 3.14159; obj.area = function( r ) { return this.PI * r * r; } return obj; } var c = new Circle(); alert( ...
代码如下:<html> <head> <script type="text/javascript"><!-- ClassModel = //类模型,用于创建类 { create: function() { return function(){this.construct.apply(this,arguments);} } } Extend = function(desc, src) //模拟类继承, 将一个对象的所有成员 复制到 另一个对象中 { for(var c in src) { desc[c] = src[c]; } return desc; } Object.prototype.extend = function(src) { return Extend.apply(this, [this, src]);...
封装 :javascript中创建对象的模式中,个人认为通过闭包才算的上是真正意义上的封装 ,所以首先我们先来简单介绍一下闭包,看下面这个例子: 代码如下:<script type="text/javascript"> function myInfo(){ var name ="老鱼",age =27; var myInfo = "my name is" + name + "i am" + age +"years old"; function showInfo(){ alert(myInfo); } return showInfo; } var oldFish = myInfo(); oldFish(); </script>是不是很眼熟呢?没...
虽然在开始学习的时候觉得比较难,但只要理解了,用起来是非常方便和意义确定的。JavaScript也提供了这个this关键字,不过用起来就比经典OO语言中要"混乱"的多了。下面就来看看,在JavaScript中各种this的使用方法有什么混乱之处? 1、在HTML元素事件属性中inline方式使用this关键字: <div onclick=" // 可以在里面使用this ">division element</div> 我们一般比较常用的方法是在此使用:javascirpt: EventHandler(this),这样的形...
结果呢,看了大半天,有了一个大概的了解,细细一回味,好像什么都没懂... 这篇文章是参考<<javascript-the definitive guide,5th edition>>第7,8,9章而写成的,我也 会尽量按照原书的结构来说明javascript的面向对象技术(对象/数组->函数-->类/构造函数/原型).对一些我自己也拿捏不准的地方,我会附上原文的英文语句,供大家参考. 如果不做说明,则文中出现的所有英文语句(程序体除外)都是引自<<javascript-the definitive guide,5th edit...
JavaScript 是使用“对象化编程”的,或者叫“面向对象编程”的。所谓“对象化编程”,意思是把 JavaScript 能涉及的范围划分成大大小小的对象,对象下面还继续划分对象直至非常详细为止,所有的编程都以对象为出发点,基于对象。小到一个变量,大到网页文档、窗口甚至屏幕,都是对象。这一章将“面向对象”讲述 JavaScript 的运行情况。对象的基本知识 对象是可以从 JavaScript“势力范围”中划分出来的一小块,可以是一段文字、一...
谈JavaScript的面向对象设计有点牵强,毕竟JavaScript语言本身没有高级语言严谨。看这篇文章之前,希望大家了解c++、java、c#等高级语言,有面向对象编程的基础知识。 1.类的定义: function ClassName(){ } 大家可以发现类的定义形式是和函数是一样的。 其实函数和类只有在使用的时候才能分辨出来,比如我们在一个页面中分别使用他们: <script language="javascript"> function A(){ alert('hello'); } //A作为函数来使用 A(); /...
示例程序简述: 这个Demo为了演示如将使用GridPanel显示数据,并为GridPanel添加工具条按钮,提供弹出式窗体新增数据。 使用到的Ext组件 这个Demo涉及到Ext中的GridPanel,FormPanel和Window三个组件。效果图现在开始讲解代码,首先看一下创建GridPanel的代码片段 代码如下://定义数据列表面板类 PersonListGridPanel = Ext.extend(Ext.grid.GridPanel, { insertWin: null, updateWin: null, constructor: function() { //添加自定...
要实现对数据表中的数据进行操作,第一步就是要取得数据表中的数据,我们把上篇文章中的创建Store的方法也略作调整,让其从数据表中读取数据。 代码如下:this.departmentStore = new Ext.data.JsonStore({ proxy: new Ext.data.HttpProxy({url: "http://localhost:8080/Test_EXT/DB/Department.php"}), fields: ["department_code", "department_name", "manager", "division_code"] }); Department.php,负责连接SQL数据库,取得...
1) 如何创建对象: 1. 使用constructor,例如: var obj = new Object() // var 可以省略 var obj = new Date() 2. 使用对象字面值(object literals),例如: 程序代码 var obj = "123" // 创建一个String对象 var obj = /^abc$/ //创建一个RegExp对象 更加复杂的情况是,我们可以直接生成一个自定义的只有属性的对象: 程序代码 var obj = { name:"killercat", home:"www.i170.com/user/killercat" } document.write(obj.name+...
第一种:使用this关键字 function Class1() { this.onclick = function(e) { for (var i=0; i < 1000; i++) { var a = new Date(); } } } 使用this.的方法可以很灵活地给对象添加属性和方法,而且和大部分的OOP语言都相似,甚至在运行中都可以添加。 第二种:使用prototype关键字 function clickFunc(e) { for (var i=0; i < 1000; i++) { var a = new Date();...
javascript 的面向对象特性参考。 这是我学习javascript中面向对象特性的一点总结。希望对具有其他语言的面向对象设计经验的朋友理解javascript的OO有所帮助。我具有c++,java和python的面向对象设计的经验。 总的感受, javascript作为一种弱类型的动态语言,语法解决于java,但其面向对象的方式更和python相识。 1 面向对象的特性 类,成员变量,成员函数,类变量,类方法,继承,多态 1) 类 类的定义:function Circle(r) { ...