任何人都可以展示一个使用prototype.js创建类的示例以及它是如何工作的。除了官方网站之外,任何人都可以为prototype.js提供好的示例和教程吗?
问问题
4485 次
1 回答
4
创建 PrototypeJS 类与在普通 OOP 语言中创建类非常相似。
首先从命名你的班级开始
var myClass = Class.create({ });
这将创建一个空类 - 现在用方法填充它,如果你放置一个方法initialize
PrototypeJS 将作为构造函数触发它
var myClass = Class.create(
{
initialize : function()
{
this.options = 0;
}
});
你可以在initialize()
方法中设置任何你想要的东西,比如默认值或者只是初始化类的属性。让我们加入一些其他方法并展示如何实例化该类。
var myClass = Class.create(
{
initialize : function()
{
this.options = 0;
},
testme : function()
{
this.options++;
},
showme : function()
{
alert(this.options);
return this.options;
}
});
var theClass = new myClass();
让我们更进一步,在方法中调用其他方法并将选项传递给构造函数。
var myClass = Class.create(
{
initialize : function(option)
{
this.options = (option ? option : 0);
this.testme();
},
testme : function()
{
this.options++;
},
showme : function()
{
alert(this.options);
return this.options;
}
});
var theClass = new myClass(200);
theClass.showme();
//will alert 201 and return 201
这很酷——但是类继承呢?这在 OOP 中是一件大事——假设我们有一个单独的类,它是myClass
. 对于您在子类中覆盖的任何方法,您可以传递第一个变量 as$super
并将引用同名的父方法 - 类似于范围解析
var myChildClass = Class.create(myClass,
{
initialize : function($super,option)
{
$super(option);
// the child class needs option's default value at 150 or whatever is
// passed so run the parent initialize first and then redefine the
// option property
this.option = (option ? option : 150);
// you can still run methods in the parent that are not overridden in
// the child
this.testme();
}
});
var child = new myChildClass();
child.showme();
//will alert() 151 and return 151
我希望这对你有帮助。
以下是我的 github 中一些更复杂的现实世界示例
https://github.com/jwestbrook/Prototype.Growler
于 2013-03-20T15:02:06.650 回答