prototype
ASP Prototype框架概述

ASP Prototype框架概述Prototype框架是一个基于客户端的Ajax框架,其实质就是将客户端常用的Aj ax代码,如创建XMLHttpRequest对象这些重复性代码,使用面向对象的方式进行封装,封装成一个js文件。
Prototype框架使用过程,只需要调用相应的对象,而不必关系其具体的实现细节。
从这方面说,Prototype是一个基础的JavaScript应用框架,Prototype的目的是为了更方便的开发JavaScript的应用,使用它可以更加方便简单的使用JavaScript 编程,开发出面向对象的JavaScript程序,Prototype框架是JavaScript代码的自然扩展,更容易被人接受。
但是,Prototype是最受欢迎的AJAX框架之一。
比较著名的网站2006年的调查结果显示,Prototype同框架规模庞大的Yahoo! User Interface,Goog le Web Toolkit,and Atlas.等相比较起来,其排名竟然遥遥领先,这不能不令人感到惊异。
答案很简单:Prototype使用起来就像是对于JavaScript语言的自然扩展。
尝试过Prototype框架后,笔者几乎坚信Prototype框架应该被纳入JavaScript语言。
Prototype中包含了一个功能强大好用的Ajax框架,Prototype是一个基础性的框架,很多更高层次的框架都以它为基础,例如scriptaculous效果库。
Prototype框架以面向对象的方式封装JavaScript代码,其封装文件为prototype. js。
使用prototype.js可以大大简化客户端代码的开发工作。
prototype.js引入了类的概念,用其编写的类可以定义一个initialize的初始化函数,在创建类实例的时候会首先调用这个初始化函数。
正如其名字,prototype.js的核心还是prototype ,虽然提供了很多可复用的代码,但没有从根本上解决JavaScript的开发和维护问题。
ASP Prototype框架示例

ASP Prototype框架示例
在前面曾经提到,使用Prototype框架开发Ajax程序非常容易,只需要把prot otype.js文件,放到Ajax页面相同的文件夹即可。
现在创建一个案例,演示使用Pr ototype框架开发Ajax程序。
该程序功能非常简单。
首先创建客户端页面,打开记事本,输入下列代码:
将上述代码保存,名称为pf.html。
在文件中使用语句“<script src="prototype.j s"></script>”将Prototype框架的库文件引入到该文件中,在脚本程序中,使用方法$F获取文本域中输入的值,创建url变量其值为pf.jsp,pf.jsp文件就是处理客户端请求信息的服务器端文件。
并创建变量pars用来传递参数。
在程序下面创建myAj ax对象,指定向服务器端传递信息,其方式为get,参数为pars,服务器端返回信息处理函数为showResponse函数。
在showResposne函数中,直接使用对话框输出服务器端返回信息。
现在创建服务器代码,打开记事本,输入下列代码:
将上述代码保存,名称为pf.jsp。
在该文件中,获取客户端传递的参数empID 的值,在下面使用out对象将该值输出。
一切完成之后,打开IE浏览器,在地址栏中输入http://localhost:8080/js/pf.html,单击【转到】,会显示如图7-10所示窗口:
图7-10 你好页面显示
在上述显示窗口上,在文本域中输入信息,单击【提交】按钮,会显示如上图的对话框。
对话框中的信息为服务器端返回信息。
Vue中Vue.prototype使用详解

Vue中Vue.prototype使⽤详解⽬录1. 基本⽰例2. 为实例prototype设置作⽤域3. 注册和使⽤全局变量4. 原型⽅法的上下⽂5. 应⽤⽰例5.1 引⼊ axiosVue.prototype、ponent和e区别1、Vue.prototype2、ponent3、e我们可能会在很多组件⾥⽤到数据/实⽤⼯具,但是不想污染全局作⽤域。
这种情况下,可以通过在原型上定义它们使其在每个 Vue 的实例中可⽤。
1. 基本⽰例在main.js中添加⼀个变量到 Vue.prototypeVue.prototype.$appName = 'My App'这样 $appName 就在所有的 Vue 实例中可⽤了,甚⾄在实例被创建之前就可以new Vue({beforeCreate: function () {console.log(this.$appName)}})控制台会打印出 My App,就这么简单!2. 为实例prototype设置作⽤域为什么 appName 要以开头?这很重要吗?这⾥没有什么魔法。
开头?这很重要吗?这⾥没有什么魔法。
开头?这很重要吗?这⾥没有什么魔法。
是在 Vue 所有实例中都可⽤的 property 的⼀个简单约定。
这样做会避免和已被定义的数据、⽅法、计算属性产⽣冲突。
如果我们设置:Vue.prototype.appName = 'My App'那么如下的代码输出什么:new Vue({data: {// 啊哦,`appName` 也是⼀个我们定义的实例 property 名!appName: 'The name of some other app'},beforeCreate: function () {console.log(this.appName)},created: function () {console.log(this.appName)}})⽇志中会先出现 "My App",然后出现 "The name of some other app",因为 this.appName 在实例被创建之后被 data 覆写了。
JavaScript中prototype的解释

JavaScript prototype 的深度探索J avaScript 中对象的prototype 属性,可以返回对象类型原型的引用。
这是一个相当拗口的解释,要理解它,先要正确理解对象类型(Type)以及原型(prototype)的概念。
1、什么是prototypeJavaScript 中对象的prototype 属性,可以返回对象类型原型的引用。
这是一个相当拗口的解释,要理解它,先要正确理解对象类型(Type)以及原型(prototype)的概念。
前面我们说,对象的类(Class)和对象实例(Instance)之间是一种“创建”关系,因此我们把“类”看作是对象特征的模型化,而对象看作是类特征的具体化,或者说,类(Class)是对象的一个类型(Type)。
例如,在前面的例子中,p1 和p2 的类型都是Point,在JavaScript 中,通过instanceof 运算符可以验证这一点:p1 instanceof Pointp2 instanceof Point但是,Point 不是p1 和p2 的唯一类型,因为p1 和p2 都是对象,所以Obejct 也是它们的类型,因为Object 是比Point 更加泛化的类,所以我们说,Obejct 和Point 之间有一种衍生关系,在后面我们会知道,这种关系被叫做“继承”,它也是对象之间泛化关系的一个特例,是面向对象中不可缺少的一种基本关系。
在面向对象领域里,实例与类型不是唯一的一对可描述的抽象关系,在JavaScript 中,另外一种重要的抽象关系是类型(Type)与原型(prototype)。
这种关系是一种更高层次的抽象关系,它恰好和类型与实例的抽象关系构成了一个三层的链。
在现实生活中,我们常常说,某个东西是以另一个东西为原型创作的。
这两个东西可以是同一个类型,也可以是不同类型。
习语“依葫芦画瓢”,这里的葫芦就是原型,而瓢就是类型,用JavaScript 的prototype 来表示就是“瓢.prototype = 某个葫芦”或者“瓢.prototype= new 葫芦()”。
prototype方法

prototype方法prototype方法是JavaScript中的一个重要概念,它是基于原型继承的机制来创建对象和实现继承的一种方式。
在JavaScript中,每个对象都有一个内部属性__proto__,指向其构造函数的prototype 属性。
通过这种原型链的方式,对象可以继承其构造函数的属性和方法。
让我们来了解一下prototype方法的基本原理。
在JavaScript中,每个函数对象都有一个prototype属性,它指向一个对象。
这个对象就是该函数的原型对象,我们可以通过给原型对象添加属性和方法来实现对所有实例对象的共享。
当我们创建一个函数的实例对象时,这个实例对象会自动继承原型对象的属性和方法。
使用prototype方法创建对象有以下几个步骤:1. 定义一个构造函数,构造函数可以接受参数并初始化对象的属性。
2. 在构造函数的prototype属性上定义对象的方法和属性。
3. 使用new关键字加上构造函数的调用来创建对象实例。
下面是一个例子,通过prototype方法创建一个Person对象:```javascript// 定义构造函数function Person(name, age) { = name;this.age = age;}// 在构造函数的prototype属性上定义方法Person.prototype.sayHello = function () {console.log("Hello, my name is " + + " and I am " + this.age + " years old.");};// 创建对象实例var person1 = new Person("Alice", 25);var person2 = new Person("Bob", 30);// 调用对象的方法person1.sayHello(); // 输出 "Hello, my name is Alice and I am 25 years old."person2.sayHello(); // 输出"Hello, my name is Bob and I am 30 years old."```在上面的例子中,我们首先定义了一个构造函数Person,它接受两个参数name和age,并将它们赋值给对象的属性。
Prototype模式

Prototype模式意图是:通过给出一个原型对象来指明所要创建的对象类型,然后用复制这个原型对象的办法创建出更多的同类型对象。
在java的类库中已经实现了这一模式,只要你定义的类实现了Cloneable接口,用这个类所创建的对象可以做为原型对象进而克隆出更多的同类型的对象。
下面举个例子,来介绍简单的介绍一下它的使用。
import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.io.Serializable;class Prototype implements Cloneable,Serializable{private String str;private Temp temp;public Object clone()throws CloneNotSupportedException{ //浅克隆Prototype prototype=(Prototype)super.clone();return prototype;}public Object deepClone()throws IOException,ClassNotFoundException{ //深克隆ByteArrayOutputStream bo=new ByteArrayOutputStream();ObjectOutputStream oo=new ObjectOutputStream(bo);oo.writeObject(this);ByteArrayInputStream bi=new ByteArrayInputStream(bo.toByteArray()); ObjectInputStream oi=new ObjectInputStream(bi);return oi.readObject();}public String getStr() {return str;}public void setStr(String str) {this.str = str;}public Temp getT emp() {return temp;}public void setTemp(Temp temp) {this.temp = temp;}}class Temp implements Serializable{}public class Test {public static void main(String[] args)throws CloneNotSupportedException,ClassNotFoundException ,IOException{Prototype pt=new Prototype();Temp temp=new Temp();pt.setTemp(temp);pt.setStr("Hello World");System.out.println("使用浅克隆方法进行创建对象");Prototype pt1=(Prototype)pt.clone();System.out.println("=============================");System.out.println("比较pt和pt1的str的值:");System.out.println(pt.getStr());System.out.println(pt1.getStr());System.out.println("修改pt1对象中str的值后,比较pt和pt1的str的值:"); pt1.setStr("你好,世界");System.out.println(pt.getStr());System.out.println(pt1.getStr());System.out.println("============================");System.out.println("比较pt和pt1中temp对象的值");System.out.println(pt.getTemp());System.out.println(pt1.getTemp());System.out.println("使用深克隆方法进行创建对象");System.out.println("============================");pt1=(Prototype)pt.deepClone();System.out.println(pt.getTemp());System.out.println(pt1.getTemp());}}输出结果:使用浅克隆方法进行创建对象=============================比较pt和pt1的str的值:Hello WorldHello World修改pt1对象中str的值后,比较pt和pt1的str的值:Hello World你好,世界============================比较pt和pt1中temp对象的值Temp@affc70Temp@affc70使用深克隆方法进行创建对象============================Temp@affc70Temp@15d56d5从上面的输出结果我们可以看出使用Object.clone()方法只能浅层次的克隆,即只能对那些成员变量是基本类型或String类型的对象进行克隆,对哪些成员变量是类类型的对象进行克隆要使用到对象的序列化,不然克隆克隆出来的Prototype对象都共享同一个temp实例。
Prototype的开发与应用实践

晶 。 用同 ≤ 返值≤毒 。
功能范围 ,最后 以
在保证浏览器兼 容的 情况下实 例化XR H 对象。
9 个精彩例程介绍
了它的应用实践。
软件组织架构及应用
Pt p Jar的 bcN b、ni、 r te asi oe u eFc n o y对 v ct jt m rut o p o
¥ ) 数 用于 代在D M中 繁 (函 是 替 O 频 使用的
d cmetgtl e tyd ) o u n.e e nB l( 方法 的 , Em 其返 回参数传
JvSrt aacp类库 , i 也是其他框架 的鼻祖 。其对现有 入的 I所指 I的元素 。不过 , D e ' 其允许传入 多个 I D
:
1 4 ・ 序贯 ・ O 量
维普资讯
选数名 属 提定方 瀑懑 项 的 琐/中自的对 麓 芸中为X性法供义法 ≤ 参 n oX 方 X X
?- l■ v
:
≥
・
黧
.
赣
R u b 麓 y o
P o rmme 1OS rga r
过由于优秀的表现和完美的封装以及服务器语言无 本框。如果 I指向一个按钮, D 那自然就得不到所
,
关性 ,现在已经被应用到各个领域 ,包括 J v 、 a a . 要 的v l 值 。 ae u
NT E
、
PP 。 H 等 不过在 P t ye ro p的源码 中. ot 还是可 以
P tye o p主要包括三个内 一是提供了一 Si、r 、VI 。t 容: tgAa En r r e等对象进行了扩  ̄ ̄7 n y 展,1 一些 J
些全局性的函数 ,替代原先烦琐重复 的代 码 二 新的对象和类 , 并在此基础上提供了很 多有用的公
工业设计专业英语(第三版)第九课纸上原型

ENGLISH FOR INDUSTRIAL DESIGN
Simple, Powerful and free
使用中的注意事项 1)纸张原型要比屏幕尺寸大。纸上原型的操作距离通常都要大于人不电脑乊间的操作距离 ,而丏人的手指比鼠标指针大,写的字也要比12点、14点大,所以要保持模拟的仿真度, 就需要等比例放大一些,这样做测试的时候信度就较高,旁观者观察和记录也容易。 2)除了尺寸,原型的操作高度及规距也需要注意。合适的高度和规距会让沟通变得更准确 更舒适更高效,同时在用户测试时,也能在一定层面上增加这种测试方法的信度以及本次测 试的效度。 3)尽量用单色,这样更简洁,而丏丌会在重要的流程中分散注意力。当然必要时可使用鲜 艳颜色的便签纸记录重要的修改方案。 4)丌用在纸上渲染每个交互和规觉效果,一些情况可以用语言描述代替显得更简单实用。 “篮球在旋转”,“迚度条达到了20%...50%...75„”这些大声说出来反馈给你的沟通对象 即可。 5)手绘丌是唯一丏必要的方式,你可以打印现有的网站界面产品,然后把他们按网页框架 裁剪成模块,不手绘的纸张和卡片配合使用。
ENGLISH FOR INDUSTRIAL DESIGN
Simple, Powerful and free
纸上原型测试时需注意的要点
测试是原型用来解决丌确定问题的一种方式,纸上原型的测试不普通原型的测试原则保持一 致。此外纸上原型ቤተ መጻሕፍቲ ባይዱ有一些特殊事项需要注意:
1)测试中代替计算机给出操作反馈的是设计团队的成员,他负责秱劢、切换纸片,写下电脑反 馈,给出反馈描述,通过这些让原型变成可交互的。 2)模拟时丌要提供仸何计算机丌能给出的反馈。要机械的思考,机械的反馈。 3)必须有一位设计团队成员担仸“主持人”的角色,他给用户阐述测试目的,介绍测试流程, 当用户提出疑问戒操作中遇到问题而计算机又无法反馈时,主持人负责给出必要的解释和帮劣。 另外,他负责指导和协调整个测试仸务,确保其正常迚行。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Prototype
Outline
1. Category
2. Prototype
2.1 Background
2.2 Definitions of Prototype
2.2 Factors that influence the Prototype
1. Category (范畴)
赵艳芳(2001):严格来讲,范畴是事物在认知中的归类。
F.Ungerer&H.J.Schmid(2001): The product of the mental process of classification. They can be understood as mental concepts stored in our mind.
王寅(2001): 范畴是人们在互动体验的基础上对客观事物普遍本质在思维上的概括反映,是由一个通常聚集在一起的属性所构
成的“完形”概念构成的。
2.1 Background
对原型的研究始于上个世纪60年代末, Berlin & Kay调查98种语言,发现“焦点色”(人们对颜色进行范畴化的参照系统)的存在(Berlin& Kay, 1969)。
受到“焦点色”以及维特根斯坦“家族相似性”的启发, Rosch和Labov将研究范围扩展到其他范畴, 发现同样的现象,并提出原型(prototype) 概念(Rosch, Labov , 1973)。
2.2 Definition of Prototype
认知语言学家目前对“原型”主要有两种解释:
一是指范畴内典型代表;
Rosch (1975)认为原型是与同一概念的成员有更多共同特征的实例, 这个典型代表对于识别范畴起重要作用。
Langacker(1987): "A prototype is a typical instance of a category."
二是指范畴核心概念的概括性图式的表征;
Taylor (2001): "not a particular entity is the prototype, but that it instantiates the prototype."
(原型是范畴的概念核心的图式表征, 并认为实体并非原型, 仅例示了原型。
)
2. Prototype (原型)
2.2 Factors that Influence the Prototype
认知范畴的典型也并非固定不变的,而是随语境的变化而变化,并依赖于贮存在我们内心中的认知模式,而认知模式又最终依赖于文化模式。
2.2.1 Context-dependence
The prototypes of cognitive categories are not fixed, but may change when a particular context is introduced, and the same is true
for category boundaries(F. Ungerer, H. J. Schmid, 2001).
Ungerer 和Schmid (1996:43) 结合如下以狗为参照的例句作了进一步的比较和研究。
1. The hunter took his gun, left the lodge and called dog.
2. Right from the start of the race, the dogs began chasing the rabbit.
3. She took her dog to the salon to have its curls reset.
4. The policemen lined up with the dogs to face the rioters.
2. Prototype (原型)
2.2.2 Cultural Models
同一个范畴,文化背景不同的人选择的范畴原型通常不同。
例如:“国宝”(动物)
中国:熊猫
澳大利亚:考拉,袋鼠
加拿大:海狸
泰国:大象
文化模型并不是静止的而是变化的。
一项对中国古代经典《尔雅》的研究表明,先秦时期中国人心中【家畜】范畴的原型是马,猪是范畴中的典型成员,而现代人心目中【家畜】的代表是猪和鸡,这也是不同时期文化差异导致的结果。
2. Prototype (原型)
2.2.3 Cognitive Models
“认知模式”这一个术语强调了认知实体的心理性质并考虑了个体间的差异。
特定领域的认知模式归根到底是由特定的文化模式多决定的。
例如:Barsalou(1993)的研究结果表明人们在描述“椅子”和“鸟”范畴的原型时,两个受试列举的特征最高只有47%的特征相似;即使是同一个受试,特也可能在不同的测试情况下,给同意范畴列出不同的特征。
References
1. F. Ungerer, H. J. Schmid. An Introduction to Cognitive Linguistics [M]. Beijing: ForeignLanguage Teaching and Research Press, 2001.
2. John R. Taylor. Linguistic Categorization; Prototypes in Linguistic Theory [M]. Beijing: Foreign Language Teaching and Research Press, 2001.
4. Ronald W. Langacker , Foundations of Congnitive Grammar [M]. Stanford: Stanford University Press, 1987.
3. 王寅, 李弘. 原型范畴理论与英汉构词对比[J]. 四川外语学院学报, 2003.
4. 赵艳芳. 认知语言学的理论基础及形成过程[J]. 外国语, 2001.。