Aar*_*ian 20 javascript javascript-framework
在玩了十几种不同的JavaScript库(例如Prototype,jQuery,YUI)之后,我发现每个不同的库都有不同的方式来模拟某种类层次结构并提供某种类继承支持.(除了jQuery)除了非常恼火,当你创建一个新类时,它必须依赖于库,除非你采用普通的方法.
我想知道哪个库提供了对类继承的最佳支持以及原因.
我希望有一天,JavaScript库作者可以就类创建和继承的一种风格达成一致.
我认为Microsoft Ajax完美地实现了它(使用名称空间,继承和接口等)
Type.registerNamespace("Demo");
Demo.Person = function(firstName, lastName, emailAddress) {
this._firstName = firstName;
this._lastName = lastName;
this._emailAddress = emailAddress;
}
Demo.Person.prototype = {
getFirstName: function() {
return this._firstName;
},
getLastName: function() {
return this._lastName;
},
getName: function() {
return this._firstName + ' ' + this._lastName;
},
dispose: function() {
alert('bye ' + this.getName());
}
}
Demo.Person.registerClass('Demo.Person', null, Sys.IDisposable);
// Notify ScriptManager that this is the end of the script.
if (typeof(Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();
Run Code Online (Sandbox Code Playgroud)
看看Prototype.这是一个示例:
// properties are directly passed to `create` method
var Person = Class.create({
initialize: function(name) {
this.name = name;
},
say: function(message) {
return this.name + ': ' + message;
}
});
// when subclassing, specify the class you want to inherit from
var Pirate = Class.create(Person, {
// redefine the speak method
say: function($super, message) {
return $super(message) + ', yarr!';
}
});
var john = new Pirate('Long John');
john.say('ahoy matey');
// -> "Long John: ahoy matey, yarr!"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9648 次 |
| 最近记录: |