我在弄清楚我的JavaScript应该如何构建等方面遇到了一些麻烦。 我在PHP,ActionScript 3等语言中的OOP技能是我假设的标准,但JS缺乏这一点,这让我在学习中投入了很多。
我对原型功能有一个模糊的理解,我在AS2中使用了一点 - 我相信这是我能够得到的最接近的功能。目前,我正在编写类似于此的代码:
var slideshow =
{
property: value,
/**
* This is a method
*/
myMethod: function()
{
// do method things
}
};
// ------
slideshow.property ++;
slideshow.myMethod();
这一切都运作正常,但是我的能力无效:
var myslideshow1 = new Slideshow();
var myslideshow2 = new Slideshow();
myslideshow1.property = 10;
myslideshow2.property = 16;
任何指针都是supoib。
答案 0 :(得分:4)
任何javascript函数都可以作为类的构造函数,所以试试这个:
function SlideShow(params) {
return {
property: value,
myMethod: function() {
//do method things
};
};
};
var slideshow1 = new SlideShow(params);
slideshow1.property = 10;
//etc.
答案 1 :(得分:2)
我会皱眉apon使用原型向类中添加方法,因为可能存在性能问题
这是您可以使用的示例类结构。 JavaScript类的功能差别不大。
function MyItem(){
this.d = '';
this.clear = function( ) {
this.d = '';
}
}
var myItem = new MyItem( )
myItem.d = "test";
alert(myItem.d);
myItem.clear();
alert(myItem.d)
答案 2 :(得分:2)
你应该避免使用new运算符,一切都是公开的。做你想做的事情,拥有私有变量和函数的更好方法是执行以下操作:
var slideshow = function () {
var self = {};
var private_param = "hello";
var private_func = function(say) {
alert(say);
};
var method = function() {
private_func(private_param);
};
var param = 500;
self.method = method;
self.param = param;
return self;
// return object, with the method func and param param publicly accessible
// private_param and private_func are not accessible to the outside
};
var presentation = slideshow(); // new slideshow, you could edit to pass in init params
presentation.method(); // hello