"类“;常量和构造函数:如何实现
"Class" constants and constructor: how to implement?
我想在javasript中实现这样的东西,请:
var hat = new Hat(Hat.Color.RED, Hat.Size.MEDIUM);
我该怎么做?(试图扰乱函数prototype
,但有点成功)?
如果创建这样的Hat
构造函数,就可以做到这一点:
function Hat(color, size) {
this.color = color;
this.size = size;
}
Hat.Color = {
RED: "#F00",
GREEN: "#0F0",
BLUE: "#00F"
};
Hat.Size = {
SMALL: 0,
MEDIUM: 1,
LARGE: 2
}
然后,您可以创建一个new Hat
并获取其属性
var hat = new Hat(Hat.Color.RED, Hat.Size.MEDIUM);
var hatColor = hat.color; // "#F00"
Hat
将是一个构造函数:
function Hat(color, size) {
this.id = "X"+color+size; // or anything else
}
原型上有Hat
实例的"方法":
Hat.prototype.raise = function() {
...
};
但是常数是Function对象的属性:
Hat.Color = {
RED: "F00",
GREEN: "0F0",
...
};
Hat.Size = {
MEDIUM: 0,
LARGE: 1,
...
};
如果你的库正确地实现了"扩展"函数(构造函数没有什么特别的),这也应该有效:
Object.extend(Hat, {
Color: {RED: "F00", GREEN: "0F0", ...},
Size: = {MEDIUM: 0, LARGE: 1, ...},
});
这是函数继承方式。它区分了私有和公共的方法和变量。
var Hat = function (color, size) {
var that = {};
that.Color = { RED: 'abc'}; // object containing all colors
that.Size = { Medium: 'big'}; // object containing all sizes
that.print = function () {
//I am a public method
};
// private methods can be defined here.
// public methods can be appended to that.
return that; // will return that i.e. all public methods and variables
}
相关文章:
- 如何使用动画实现纸张推车
- 客户端服务器REST API captcha实现
- 如何实现此布局
- Meteor忘记了密码的实现
- 使用Native Sockets在Android中实现WebSockets
- 在样板文件中实现Ajax
- instanceof是如何在JavaScript中实现的
- 如何正确实现Jquery多选小部件
- 实现一个建立在google.com之上的自定义搜索引擎
- 多个组件是如何实现的
- window.location使用jquery mobile实现chrome跳转
- 如何在OpenERP中实现网络摄像头
- Node.js使用Series函数(模式?)实现流控制时出现意外结果
- javascript加密实现,包括可信否认
- 实现比较方法的最佳实践是什么;s的比较类型是在运行时选择的
- 如何让程序员在javascript中实现正确的回调
- 如何使用自定义辅助对象(handler)实现嵌套的每个循环
- AngularJS智能表全局配置实现
- Expressjs/AngularJS:实现req-flash后出错
- Java' Rhino实现实现了哪个JavaScript (ECMAScript)版本(更新策略是什么?)