JavaScript中定义类

4

我一直在学习面向对象的JavaScript。这是我正在阅读的链接: JavaScript面向对象。然而,我也在阅读这本书:Practical CakePHP Projects。我试图弄清楚为什么他们要使用类来定义类?根据我所了解的内容,应该使用function关键字来定义类。以下代码是这本书中的一个示例。作者是否只是错了或者有什么我不知道的地方?

var TravelMapprManager = Class.create({

    //Constructor
    initialize: function(map_container) {
        this.map_container = map_container;

        //Start the map.
        Event.observe(window, 'load', this.displayMap.bind(this));

        //Observe the map buttons.
        Event.observe(document, 'dom:loaded', this.initObservers.bind(this));
    },
2个回答

7

Class不是一个关键字。它是一个包含create函数和prototype的库代码的命名空间,用于设置构造函数(即您提到的函数)。

您可以在此特定库的文档中了解更多信息:http://api.prototypejs.org/language/Class/create/

Class.create创建一个类并返回一个构造函数,用于实例化该类。调用构造函数(通常作为new语句的一部分)将调用类的initialize方法。


1

我想知道你正在阅读的书中是否使用了某个库?这可能会回答你的直接问题。

以下是一个非常快速的示例(希望正确,因为我没有测试过,但它应该能给你一个想法)你正在尝试做的事情(刚刚发现这可能有所帮助:http://www.phpied.com/3-ways-to-define-a-javascript-class

function TravelMapprManager() {
}

TravelMapprManager.prototype.initialize = function(mapContainer) {
    this.mapContainer = mapContainer;

    ...
};

var mappr = new TravelMapprManager();
mappr.initialize(...);

phpied的文章在评论中受到了批评,这让整个事情变得更加混乱而不是有帮助。 - David Sykes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接