prototype 学习笔记整理

var Class = {
create: function() {
return function() {
this.initialize.apply(this, arguments);
}
}
}
定义了一个class函数作为创建类的模版或者说是原型
使用方法


代码如下:

<html>
<title>Test Class.create()</title>
<head>
<script language="JavaScript" type="text/javascript" src="prototype.js"></script>
<script>
var llinzzi= Class.create();
llinzzi.prototype = {
initialize:function(){
document.writeln('This is create when initialize');
},
fuv:function(){document.writeln('This is inline method');}
}
var linChild = new llinzzi();
</script>
</head>
<body>
<script>
//window.onload(linChild);
window.onload(linChild.fuv());
</script>;
</body>
</html>

////
This is create when initialize This is inline method ;
/////
就是当采用了prototype的Class.create();方法创建对象的时候,initialize作为特殊的方法,在创建实例的时候被执行,用以初始化.
继承
Object.extend = function(destination, source) {
for (var property in source) {
destination[property] = source[property];
}
return destination;
}
此方法将拷贝所有的source object的属性和方法到destination object.
Prototype 对Object类进行的扩展主要通过一个静态函数Object.extend (destination, source)实现了JavaScript 中的继承。 从语义的角度, Object.extend (destination, source)方法有些不和逻辑, 因为它事实上仅仅实现了从源对象到目标对象的全息拷贝。不过你也可以这样认为:由于目标对象拥有了所有源对象所拥有的特性, 所以看上去就像目标对象继承了源对象(并加以扩展)一样.
// make a (shallow) copy of obj1
var obj1 = {
method : "post",
args : ""
};
var obj2 = Object.extend({}, obj1);
使用 例子:


代码如下:

<html>
<title>Test Object.extend</title>
<head>
<script language="JavaScript" type="text/javascript" src="prototype.js"></script>
<script>
function log(message) {
document.writeln(" >>>>>: " +message);
}
var obj1= {
method : "post",
args : ""
};
var obj2 = Object.extend({}, obj1);
log(obj2.method);
log(obj1 == obj2);
log(obj1.method);
log(obj2 == obj1);
</script>
</head>
<body>
</body>
</html>

// merges in the given options object to the default options object
Object.extend(options, {
args : "data=454",
onComplete : function() { alert("done!"); }
});
options.method // "post"
options.args // "ata=454"
options.onComplete // function() { alert("done!"); }
使用例子:


代码如下:

<html>
<title>Test Object.extend</title>
<head>
<script language="JavaScript" type="text/javascript" src="prototype.js"></script>
<script>
function log(message) {
document.writeln(" >>>>>: " +message);
}
var options= {
method : "post",
args : ""
};
Object.extend(options, {
args : "data=454",
onComplete : function() { alert("done!");}
});
options.method // "post"
options.args // "ata=454"
options.onComplete // function() { alert("done!"); }
log(options.method);
log(options.args);
log(options.onComplete);
</script>
</head>
<body>
</body>
</html>

(0)

相关推荐

  • prototype 学习笔记整理

    var Class = { create: function() { return function() { this.initialize.apply(this, arguments); } } } 定义了一个class函数作为创建类的模版或者说是原型 使用方法 复制代码 代码如下: <html> <title>Test Class.create()</title> <head> <script language="JavaScript&q

  • JavaScript学习笔记整理_关于表达式和语句

    表达式和语句 eval( ) 只有一个参数 参数非字符串时,直接返回这个参数: 参数为字符串时,它把字符串当成JavaScript代码进行编译,编译失败则抛出语法错误,编译成功则执行代码,并返回最后一条语句的值,若没有值则返回undefined eval()使用了调用它的变量的作用域环境 它接收的字符串参数,在作为单独的代码时,必须是有语义的,否则编译失败 delete运算符:用来删除对象的自由属性.数组的元素, 删除属性后,属性将不存在,而删除数组元素后,会在数组内留下一个值为undefine

  • JavaScript学习笔记整理_简单实现枚举类型,扑克牌应用

    如下所示: //实现枚举类型,扑克牌应用 function creatEnum(p){ //构造函数 var Enumeration = function(){throw 'can not Instantiate Enumerations';}; //重写原型并将原型赋值给变量proto var proto = Enumeration.prototype = { constructor:Enumeration, toString:function(){return this.name;}, va

  • jqGrid 学习笔记整理——进阶篇(一 )

    在浏览导航栏添加所需按钮 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>DEMO</title> <link rel="stylesheet" type="text/css" href="css/jquery-ui.min.css" /> <link rel=&

  • Java中jqGrid 学习笔记整理——进阶篇(二)

    相关阅读: Java中jqGrid 学习笔记整理--进阶篇(一) 本篇开始正式与后台(java语言)进行数据交互,使用的平台为 JDK:java 1.8.0_71 myEclisp 2015 Stable 2.0 Apache Tomcat-8.0.30 Mysql 5.7 Navicat for mysql 11.2.5(mysql数据库管理工具) 一.数据库部分 1.创建数据库 使用Navicat for mysql创建数据库(使用其他工具或直接使用命令行暂不介绍) 2. 2.创建表 双击打

  • JavaScript学习笔记整理_setTimeout的应用

    setTimeou的t应用 var ids = []; function foo1(i) { this.i = i; console.log('i = '+i); ids[0] = setTimeout((function () { foo1(i); }),1000); } function foo2(j) { this.j = j; console.log('j = '+j); ids[1] = setTimeout((function () { foo2(j); }),1000); } fo

  • Python学习笔记整理3之输入输出、python eval函数

    1. python中的变量: python中的变量声明不需要像C++.Java那样指定变量数据类型(int.float等),因为python会自动地根据赋给变量的值确定其类型.如 radius = 20,area = radius * radius * 3.14159 ,python会自动的将radius看成"整型",area看成"浮点型".所以编程时不用再像之前那样小心翼翼的查看数据类型有没有出错,挺人性化的. 2. input和print: 先贴个小的程序 #

  • C#学习笔记整理_浅谈Math类的方法

    c#中Math类的方法 Math.Abs 已重载. 返回指定数字的绝对值. Math.Acos 返回余弦值为指定数字的角度. Math.Asin 返回正弦值为指定数字的角度. Math.Atan 返回正切值为指定数字的角度. Math.Atan2 返回正切值为两个指定数字的商的角度. Math.BigMul 生成两个 32 位数字的完整乘积. Math.Ceiling 已重载. 返回大于或等于指定数字的最小整数. Math.Cos 返回指定角度的余弦值. Math.Cosh 返回指定角度的双曲余

  • C#学习笔记整理_深入剖析构造函数、析构函数

    构造函数.析构函数 构造函数: 1.若没提供任何构造函数,则系统会自动提供一个默认的构造函数,初始化所有成员为默认值(引用类型为空引用null,值类型为0,bool类型为false): 2.若提供了带参数的构造函数,则系统不提供默认的构造函数: 3.构造函数可重载:可提供多个不同版本的构造函数,依据参数的个数.类型来区分: 4.私有构造函数:则无法通过该构造函数实例化该对象,可通过调用静态函数来实例化:当仅用作某些静态成员或属性的容器时,可定义私有构造函数来防止被实例化: 一般的构造函数都是实例

  • JavaScript学习笔记整理_用于模式匹配的String方法

    用于模式匹配的String方法: String支持4种使用正则表达式的方法: seach()用于检索,参数是一个正则表达式,返回第一个与之匹配的子串的位置,找不到则返回-1,如果参数不是正则表达式,则首先会通过RexExp构造函数将它转换成正则表达式,seach()方法不支持全局搜索,它忽略修饰符g: replace()用于检索与替换操作,第一个参数是一个正则表达式,第二个参数是要进行替换的字符串.它对调用该方法的字符串检索,按照模式匹配子串替换成第二个参数,若包含修饰符g则全文匹配.若第一个参

随机推荐