目前我正在参与一个web应用程序项目,我们不会使用框架。
我正在寻找“最好的”javascript继承实现。我已经使用过原型样式类,如下所示:
function animal(options) {
self = this;
//properties
this.name = options.name;
//events
this.onXYZ = options.onXYZ;
//event handlers
this.handlerOfEvent = function() {
//do something using 'self' as the 'this' variable
}
}
animal.prototype.aFunction = function()
{
//do something
}等。
我没有在没有框架的情况下使用继承(通常使用Mootools),但我确实在一定程度上理解了它在Javascript中的工作原理,并看到了相当多的实现。
我想得到一些关于在哪里可以找到最好的实现的反馈,一种不会摆弄任何本机类型并允许我完全访问优势类的属性和函数的实现。
如果有任何建议,我们将非常感谢。
非常感谢您的宝贵时间。
发布于 2010-08-06 03:58:04
道格拉斯·克罗克福德( Douglas Crockford )描述了一种我最近一直偏爱的方法:
var rectangle = function(width, height)
{
var h = height, w = width;
var scale = function(s)
{
h = h * s;
w = w * s;
}
return { scale: scale };
}
var square = function(width)
{
var o = rectangle(width, width)
// Add things to o, if needed
return o;
}这不是一个非常好的例子,因为没有任何东西真正被扩展,但它应该能让人理解这个想法。要实例化这些对象,只需使用以下命令:
var newRectangle = rectangle(3, 4); // 3 by 4 rectangle
var newSquare = square(6); // 6 by 6 square发布于 2013-07-22 11:49:52
在过去,我尝试了很多方法。我最喜欢John Resig的实现方式。这很简单。您可以从http://ejohn.org/blog/simple-javascript-inheritance/查看完整的示例和javascript文件(大约只有25行代码
为了完成答案,您可以在包含他的代码之后实现一个这样的类。
var Person = Class.extend({
name : '',
init : function (name) {
this.name = name;
},
say : function () {
alert("I'm " + this.name);
}
});
var mick = new Person("Mick");
mick.say();发布于 2014-01-27 20:39:30
看看Simple Javascript Class Project (常量、属性、受保护、静态、utils等等)、Simple JavaScript Inheritance和Inheritance Patterns in JavaScript。
简单的Javascript类(sjsClass)示例
Class.extend('Foo', {
__protected : {
privV : 123,
privF : function () {
return this.privV + this.priv3;
}
},
'protected priv3' : 'Protected Value',
setX : function (x) {
this.privV = x;
},
test : function () { return this.privF(); }
});
var f = new Foo;
f.setX(456);
f.test(); // -> 'Protected Value456'
f.privF(); // -> Error
f.privV; // -> undefined
f.priv3; // -> undefinedhttps://stackoverflow.com/questions/3417843
复制相似问题