我一直在阅读面向对象的JavaScript。这是我一直在阅读的链接 Introduction to Object-Oriented 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));
},
答案 0 :(得分:7)
Class
不是关键字。它是库代码的命名空间,包含create
函数,用于设置构造函数(您提到的函数)和prototype
。
您可以在此特定库的文档中阅读有关它的更多信息:http://api.prototypejs.org/language/Class/create/
Class.create
创建一个类并返回该类实例的构造函数。调用构造函数(通常作为new
语句的一部分)将调用类的initialize
方法。
答案 1 :(得分: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(...);