面向对象语言三大特点:继承,多态,封装,这三点虽然Javascript没有提供天然的语法实现,但是我们都可以通过prototype等技巧来实现,因此这种说法似乎不过分。 在Javascript中,构造对象有三种方式: 1. 首先,我们要明确一个概念,Javascript是一种弱类型的语言,一方面体现在Javascript的变量,返回类型都是没有强类型约束的,另一方面,Javascript可以为对象任意添加属性和方法。根据这个,我们可以写出这样的代码: 代码如下...
我们先看看这样一段代码: 代码如下:<script type="text/javascript"> var Person = function () { }; var p = new Person(); </script> 很简单的一段代码,我们来看看这个new究竟做了什么?我们可以把new的过程拆分成以下三步: <1> var p={}; 也就是说,初始化一个对象p。 <2> p.__proto__=Person.prototype; <3> Person.call(p);也就是说构造p,也可以称之为初始化p。 关键在于第二步,我们来证明一下: 代码如下:<script ty...
首先我们继续上文的代码,我们来把这段代码延伸一下: 代码如下:<script type="text/javascript"> var Person = function (name, age) { this.name = name; this.age = age; this.Introduce = function () { alert("My name is " + this.name + ".Im " + this.age); }; }; var person1 = new Person("飞林沙", 21); var person2 = new Person("kym", 26); alert(person1.Introduce == person2.Introduce); </script> 结果弹出fal...
代码如下: 代码如下:<script type="text/javascript"> var People = { name: "kym", age: 21, SayHello: function () { alert("Hello,My name is " + this.name + ".I am " + this.age); } } alert(People.name); People.SayHello(); </script> 但是我们是不能重用这个对象的,我们如何把这个对象作为原型的呢? 首先,在一个JSON对象有一个构造方法是不可能的了,那么我们就做一个简单的“工厂”吧,写一个方法来专门负责创建。...
好,那就让我们一步步打造,首先让我们来看下继承原本的写法: 代码如下:<script> var Person = function(name, age) { this.name = name; this.age = age; } Person.prototype.SayHello = function () { alert(this.name + "," + this.age); }; var Programmer = function (name, age, salary) { Person.call(this, name, age); this.salary = salary; }; Programmer.prototype = new Person(); var pro = new Programmer("kym",...
call和apply方法 call方法可改变上下文this指针,类似的方法还有apply,主要用在js对象各方法互相调用的时候,使当前this实例指针保持一致,或在特殊情况下需要改变this指针。 obj1.method1.call(obj2,argument1,argument2) 如上,call的作用就是把obj1的方法放到obj2上使用,后面的argument1…这些做为参数传入。 举一个具体的例子 代码如下:function add(a, b) { alert(a + b); } function sub(a, b) { alert(a - b); } add.call...
一种面向对象语言需要向开发者提供四种基本能力: (1) 封装——把相关的信息(无论数据或方法)存储在对象中的能力。 (2) 聚集——把一个对象存储在另一个对象内的能力。 (3) 继承——由另一个类(或多个类)得来类的属性和方法的能力。 (4) 多态——编写能以多种方法运行的函数或方法的能力。 对象的类型 1.本地对象 ①Array类 ②Date类 2.内置对象 3.宿主对象 Array类 toString()方法和valueOf()方法,返回特殊的字符串。该字符串...
本地对象 ①Array类 ②Date类 对象的类型 内置对象 ①Global对象 ②Math对象 宿主对象 今天继续学习JS中的对象,昨天学完了本地对象中的两个重要对象Array和Date。今天看下内置对象Global对象和Math对象。 Global对象 encodeURI()方法用于处理完整的URI,去除一些空格等字符。 eval()方法可计算某个字符串,并执行其中的的 JavaScript 代码。 Math对象 min()方法和max()方法用于判断一组数中的最大值和最小值。这两个方法都可接受任...
本地对象 ①Array类 ②Date类 对象的类型 内置对象 ①Global对象 ②Math对象 宿主对象 今天继续学习JS中的对象,昨天内置对象Global对象和Math对象,今天继续。宿主对象 所有非本地对象都是宿主对象host object,即由ECMAScript实现的宿主环境提供的对象。所有BOM和DOM对象都是宿主对象,书上说将在后面的章节讨论。-_-||| 作用域 JS中只存在一种作用域----公用作用域,所有对象的所有属性和方法是公用的。许多开发者都在网上提出了...
一、 工厂方式 自己的理解:要创建很多个对象的实例,这些实例有相同的属性,但是有不同的属性值。这个时候就需要创个工厂函数(factory function)。 工厂函数(factory function):创建并返回特定类型的对象。 工厂函数中如果一个属性是方法的话,可以在工厂函数的外面定义对象的方法,然后通过属性指向该方法,从而可以避开每次都调用自己的属性方法,这样做使得每个对象都共享了同一个函数。 示例: 代码如下:<script type="...
字符串的连接 一、 最常用+= 一直说这种方式的效率是最低的,为什么呢?可以看下这种方式的实质过程。 var str = "hello"; str += "world"; (1) 创建存储"hello"的字符串。 (2) 创建存储"world"的字符串。 (3) 创建存储连接结果的字符串。 (4) 把str的当前内容复制到结果中。 (5) 把"world"复制到结果中。 (6) 更新str,使它指向结果。 每次完成字符串连接都会执行步骤2到6,使得这种操作非常消耗资源。如果重复这一过程几百次,甚...
对象名.addEventListener("事件名(不带ON)",函数名,true/false);(FF下) 对象名.attachEvent("事件名",函数名);(IE下) 说明: 事件名称,要注意的是"onclick"要改为"click","onblur"要改为"blur",也就是说事件名不要带"on"。 函数名,记住不要跟括号最后一个参数是个布尔值,表示该事件的响应顺序,下面重点介绍一下addEventListener的第3个参数(useCapture)。 userCapture若为true,则浏览器采用Capture,若为false则采用bub...
1,javascript的原型模型:prototype 在实现面向对象,(像是定义一个类的时候)需要一个构造函数来定义对象的成员,而方法去依附在该构造函数的原型上. 2,javascript中,为了实现继承,必须将子类构造函数的prototype设置为一个父类的对象实例. 3,css的方块套方块模型: 最外是margin 是用来设置一个元素所占的空间的边缘到相邻元素的距离 边框:border 用来设定一个元素的连线 padding 用来设置元素内容互元素边框的距离 还有背...
1. 之前写的一直都是分散的函数,用到什么功能,就写什么函数,觉得不够整洁,所以这次写的是封装的类,用起来还不错,但是传递参数的时候遇到了不少问题,所以,查阅了很多资料,总结如下: 1)动态绑定事件问题: 需要将onclick事件绑定到对象上,比如列表项。需要用到addEventListener或者attachEvent,用于吧函数操作添加到事件中去,而不是覆盖,但是,attachEvent不支持FF,FF只能用addEventListener。so,就需要一个函数,把...
Step 1: Configurate Dojo 从http://www.dojotoolkit.org/downloads 下载最新的Dojo包,并且放到你工程的某一个地方。比如,我就放把我的dojo库放在lib文件夹下(如图一)。 图一(文件目录结构) 在你的页面中加入如下代码,那么就完成了最基本的配置。 <script type="text/javascript" src="lib/dojo/dojo/dojo.js" djConfig ="parseOnLoad:true, isDebug:false"></script> Step 2: Start your First Example 我的第一个例子是...