<html> <head> </head> <body> <button onclick="person1.introduce()">person1</button> <button onclick="person2.introduce()">person2</button> <button onclick="person3.introduce()">person3</button> <button onclick="person4.introduce()">person4</button> <button onclick="checkFunc()">checkFunc</button> <button onclick="checkFuncByProto()">checkFuncByProto</button><br/> <button onclick="testCnstrct()">testCnstrct</button> <button onclick="testCnstrctpttp()">testCnstrctpttp</button> <button onclick="testDbproto()">testDbproto</button> <button onclick="JSONFontI()">JSONFontI</button> <button onclick="JSONFontII()">JSONFontII</button><br/> <button onclick="testFactory()">testFactory</button> <button onclick="testAbstractFactory()">testAbstractFactory</button> <script> var name = "1111111111" /********************************************/ /* 第一种构建对象的办法*/ /* ***推断***,{}即为对象.*/ /********************************************/ var person1 = {}; person1.name = "junzi"; person1.age = 23; person1.introduce = function () { alert("My name is " + this.name + ".I'm " + this.age); }; /********************************************/ /* 第二种构建对象的办法,类似JSON格式":"*/ /********************************************/ var person2 = { name: "junzi", age: 23, introduce: function () { alert("My name is " + this.name + ".I'm " + this.age); } }; /********************************************/ /* 第三种构建对象的办法,与Java中有些相似*/ /********************************************/ var Person = function () { this.name = "junzi"; this.age = 23; this.introduce = function () { alert("My name is " + this.name + ".I'm " + this.age); }; }; var person3 = new Person(); /********************************************/ /* 第四种构建对象,与第三种类似,只不过参数通过new 构造传入 */ /********************************************/ var Person = function (name, age) { this.name = name; this.age = age; this.introduce = function () { alert("My name is " + this.name + ".I'm " + this.age); }; }; var person4 = new Person("junzi",23); /********************************************/ /* 看看实例之间的关系@@ */ /********************************************/ var person5 = new Person("chaokong",23); function checkFunc(){ alert(person4.introduce==person5.introduce);//结果是false,说明introduce有两个实现分别在4和5中 alert(person4.age==person5.age);// 结果是true,说明基本类型的话之比较数值是否相同 alert(person4.name==person5.name);// 如果两个名字值不同,则为false,***推测***在javascript中的变量比较的是值是否相同,而方法被视为对象.于是下边... } /********************************************/ /* 通过prototype的方式 */ /********************************************/ var PersonI = function(name,age){ this.name = name; this.age = age; } /* * 在JavaScript中,prototype对象是实现面向对象的一个重要机制。 * 每个函数就是一个对象(Function),函数对象都有一个子对象,即prototype对象,类是以函数的形式来定义的。 * prototype表示该函数的原型,也表示一个类的成员的集合。 * 在通过new创建一个类的实例对象的时候,prototype对象的成员都成为实例化对象的成员。 * 1、该对象被类所引用,只有函数对象才可引用; * 2、在new实例化后,其成员被实例化,实例对象方可调用。 * 同时,函数是一个对象,函数对象若直接声明成员,不用被实例化即可调用。 */ PersonI.prototype.introduce = function(){ alert("My name is " + this.name + ".I'm " + this.age); } var person6 = new PersonI("junzi",23); var person7 = new PersonI("chaokong",23); function checkFuncByProto(){ alert(person6.introduce==person7.introduce);// alert(person6.age==person7.age); alert(person6.name==person7.name); } /********************************************/ /* 研究研究prototype*/ /********************************************/ /* * JavaScript中创建一个对象分以下几步: * <1> var p={}; 也就是说,初始化一个对象p。 * <2> p.__proto__=Person.prototype; * <3> Person.call(p);也就是说构造p,也可以称之为初始化p。 */ var PersonII = function () { }; //通过prototype创建一个方法 PersonII.prototype.sayHello = function(){ alert("hello"); } var p = new PersonII(); function testCnstrct(){ alert(p.__proto__ === PersonII.prototype); } /* * 首先var p=new PersonII();可以得出p.__proto__=PersonII.prototype。 * 那么当我们调用p.sayHello()时,首先p中没有sayHello这个属性, * 于是,他就需要到他的__proto__中去找,也就是PersonII.prototype, * 而我们在上面定义了PersonII.prototype.sayHello=function(){}; * 于是,就找到了这个方法。 */ function testCnstrctpttp(){ p.sayHello(); } /** 继续...原型链 */ PersonII.prototype.age = 23;// 设定PersonII的属性 var Programmer = function () { };// 创建一个新对象Programmer,可以得出pp.__proto__ = Programmer.prototype; /* * 设 var tempp = new PersonII(); * ∵ Programmer.prototype = new PersonII(); * ∴ Programmer.prototype = tempp; * * ∵ tempp.__proto__ = PersonII.prototype; * ∴ Programmer.prototype.__proto__ = PersonII.prototype; * 设 var pp = new Programmer(); * ∴ pp.__proto__ = Programmer.prototype。 * ∴ pp.__proto__.__proto__ = PersonII.prototype。 * * * pp中没有sayHello()这个方法,所以到pp.__proto__中查找. * pp.__proto__(也就是Programmer.prototype,也就是tempp,也就是PersonII(),)也没有sayHello()这个方法,所以到pp.__proto__.__proto__中查找 * pp.__proto__.__proto__也就是PersonII().prototype,在这里存在sayHello()这个方法 * * age属性是同样的道理,只不过在Programmer.prototype的时候就已经找到age了,所以就不继续往下找了. */ /* 这也就是原型链的实现原理。 * 其实prototype只是一个假象,他在实现原型链中只是起到了一个辅助作用, * 他只是在new的时候有着一定的价值,而原型链的本质,其实在于__proto__! */ Programmer.prototype = new PersonII();// *** Programmer.prototype.writeCode = function () { alert("print 'fuck the js with my jb'"); }; Programmer.prototype.age = 22; var pp = new Programmer(); function testDbproto(){ pp.sayHello(); pp.writeCode(); alert(pp.age); } /********************************************/ /* JSON格式详细 */ /********************************************/ /* 1. */ var PersonIII = { create: function (name, age) { this.name = name; this.age = age; }, introduce: function () { alert("Hello,My name is " + this.name + ".I am " + this.age); } } function JSONFontI(){ /* * 这样是不行的,因为piii = Person.__proto__,而没有这样的 XXX.__proto___=Person.prototype,所以找不到PersonIII内部的方法 * var piii = new PersonIII() * piii.create("junzi", 23); * piii.introduce(); */ PersonIII.create("junzi", 23); PersonIII.introduce(); } /* 2. */ /* 用X做一个中间变量,使得我们可以访问JSON对象的内部属性。*/ function JSONFontII(){ var x = function(){ };//必须有function() x.prototype = PersonIII; var px = new x(); px.create("junzi", 23); px.introduce(); } /* 3. */ /* 工厂模式 */ var Factory = { createPersonIII : function (className,name,age) { var temp = function () { className.create(name, age); }; temp.prototype = className; var result = new temp(); return result; } }; function testFactory(){ var person = Factory.createPersonIII(PersonIII,"junzi",23); person.introduce(); } /* 4. */ /* 抽象工厂模式 */ var abstractFactory = { create: function (className, params) { var temp = function () { className.create.apply(this, params); }; temp.prototype = className; var result = new temp(); return result; } }; function testAbstractFactory(){ var person = abstractFactory.create(PersonIII,["junzi",23]); person.introduce(); } </script> </body> </html>
发表评论
-
前台是个什么东西---JavaScript---一个验证码的小程序
2010-06-25 10:12 663<!DOCTYPE html PUBLIC ... -
前台是个什么东西---JQ&JS---一个排班的程序(JAVASWT改版)
2010-06-23 20:54 1284之前是java写的...swt...我擦界面做的那个销魂啊.. ... -
前台是个什么东西---JavaScript---站在CSDN的肩膀上-->页面上的滚动广告图
2010-06-14 13:50 821<html> <bo ... -
前台是个什么东西---JavaScript---页面上的"今天是X年X月X日"
2010-06-14 13:45 733<!DOCTYPE html PUBLIC ... -
前台是个什么东西---JQuery---几种控制div的UI操作
2010-05-21 11:43 1358<html> <head ... -
前台是个什么东西---JQuery---导航菜单
2010-05-20 09:31 692<html> <style ty ... -
前台是个什么东西---JavaScript---JQuery简单测试ajax
2010-05-14 15:11 941jQuery的ajax有很多中实现方式,这里我只用post方法 ... -
前台是个什么东西---JavaScript---执行
2010-05-12 11:17 678<html> <head> ... -
前台是个什么东西---JavaScript语法集锦
2010-05-12 10:01 805click() 对象.click() 使对象被点击 ...
相关推荐
- **外部脚本文件**: 当多个页面共享相同的JavaScript代码时,可以将其保存在独立的`.js`文件中,并通过`<script src="file.js"></script>`的方式引用。 - **好处**: 提高代码复用率,减少代码冗余,提高网站性能。 ...
总的来说,"web前台javascript手册"将涵盖这些基本概念以及高级特性,包括ES6以上的版本更新,为开发者提供一个全面的JavaScript学习资源。通过阅读和实践,开发者能够提升自己的JavaScript技能,更好地进行网页交互...
Objective-C是苹果公司开发的面向对象的编程语言,主要用于iOS和macOS的开发。在这个项目中,Objective-C被用来实现iOS端的VoIP功能。这包括集成Apple的PushKit框架,处理VoIP推送通知,以及使用CoreTelephony框架...
javascript函数,与一般的javascript程序不同的是它是基于DOM(文档对象模型)和面向对象的方法设计,拥有属性、 方法和事件以及特定的界面元素。 写这些程序的目的是为了给大家提供更简单高效的WEB设计方法,提供...
《JS前台特效12月(全集)》这个压缩包文件包含了前端开发中常见的JavaScript特效实现,对于前端开发者来说是一个非常宝贵的资源集合。这个资源包旨在帮助开发者快速找到并学习各种JavaScript特效,以便在实际项目中...
- **函数继承**:深入了解JavaScript面向对象编程特性。 - **浏览器中的JavaScript**:理解BOM与DOM的概念及其关系。 - **BOM**:掌握浏览器对象模型(Browser Object Model)的核心对象。 - **DOM**:掌握文档...
“js扩展资料.rar”可能包含了JavaScript的进阶主题,如面向对象编程、闭包、模块化、异步编程(Promise和async/await)、错误处理等。这些扩展资料可能涵盖了一些高级技巧和最佳实践,帮助学习者提升JavaScript技能...
【电子商城 前台后台 SSH】是一个基于SSH(Struts2、Hibernate、Spring)框架的经典网络商城系统。SSH框架是Java开发中的一个流行选择,它整合了三个强大的开源组件,用于构建高效、可扩展的企业级应用。Struts2作为...
通过阅读这本书,你可以理解JavaScript的面向对象特性,如构造函数、原型链、闭包等高级主题,这些都是编写高效、可维护代码的关键。 在描述中提到的“让前台更漂亮,功能更强大”,指的是JavaScript在网页美化和...
【CSDN 博客系统前台框架代码】是面向程序员的一款资源,旨在提供一个学习和提升编程技能的平台。这个框架代码主要关注于网站的前端展示部分,涉及到的技术栈包括HTML、DIV+CSS以及SSH(Struts、Spring、Hibernate)...
9. **Flash AS2.0与AS3.0的面向对象比较**:AS2.0的面向对象类似于JavaScript,基于prototype机制,动态继承。AS3.0引入了静态类型系统,更接近Java,支持基于类的继承和基于prototype的继承。AS3.0推荐使用静态类型...
首先,Java作为后端的主要开发语言,它的强类型、面向对象的特性使其在处理复杂业务逻辑时表现出色。在"千里之行"项目中,Java可能被用于创建服务器端的控制层,负责处理HTTP请求,与数据库交互,以及调用业务服务。...
4. **Prototype**:Prototype是一个JavaScript框架,旨在简化DOM操作,提供面向对象的特性,并包含一些实用的工具函数。`Prototype.chm`是Prototype的API参考,帮助开发者理解和使用这个库。 5. **Gecko DOM**:...
- **原型链**:JavaScript中的继承是基于原型链实现的,理解这一机制对掌握面向对象编程至关重要。 - **事件处理**:原生JavaScript的事件处理方式,如addEventListener和removeEventListener。 - **DOM操作**:...
1. **Spring**:这是一个全面的企业级应用开发框架,提供了依赖注入(DI)和面向切面编程(AOP)等功能,使得代码更加模块化,易于测试和维护。 2. **SpringMVC**:是Spring框架的一个模块,专门用于Web开发,它...
通过EF,开发者可以创建数据模型类,这些类与数据库表进行映射,实现了面向对象编程和数据库操作的解耦。此外,EF支持Code First、Database First和Model First三种开发模式,提供自动迁移功能,方便数据库结构的...
本系统采用B/S架构,面向对象编程思想进行项目开发。系统的主要用户分为管理员和用户,实现功能包括管理员首页、个人中心、用户管理、咖啡类型管理、咖啡信息管理、系统管理、订单管理,用户首页、个人中心、我的...
《前台框架设计文档1》详述的是一个基于JavaScript的前端框架设计,主要应用于搜索版的前端架构。这个框架建立在Ext 3.3.1的基础之上,并结合YC.CRM产品v4.5对Ext的扩展,采用面向对象的编程理念,以提升性能、易用...
- **Java**: 后端服务器主要用Java编写,Java是一种多平台的、面向对象的语言,尤其适合大型企业级应用。在这个项目中,Java 可能用于实现API接口,处理业务逻辑,进行数据验证等。 - **Spring Boot**: Java 项目...
1. PHP基础:包括语法、函数库、面向对象编程以及错误处理等。 2. Web前端开发:HTML、CSS用于页面结构和样式,JavaScript用于交互逻辑。 3. 数据库管理:可能使用了如MySQL等数据库系统来存储和检索论文信息。 4. ...