我正在尝试实例化一个这样的类:
var drawCrash = new DrawCrash;
但我得到一个TypeError:对象不是函数。
我已经定义了这样的类 -
var DrawCrash = {
//Private variables
canvas : ge1doot.Canvas(),
particles: "",
nbrParticles : 160,
speed : 6,
strength : .4,
radius : 4,
perspective : 0.5,
ang : null,
CosOrSin1 : null,
CosOrSin2 : null,
enum : {
Wobble : "wobble",
Twirl : "twirl"
},
setDrawing : function (type) {
if (type === this.enum.Twirl){
Blah blah blah
this.cosOrSin2 = Math.sin;
} else if (type === this.enun.Wobble){
Blah blah blah
} else {alert("Wrong enum for DrawCrash");}
},
startDrawing : function () {
blah blah blah
}
}
这种语法有问题吗?
答案 0 :(得分:1)
这不是你在Javascript中实例化对象的方式。
A" Class"在这个世界上只是一个功能:
function DrawCrash() {
//Private variables
var canvas = ge1doot.Canvas()
particles: "",
nbrParticles : 160,
speed : 6,
strength : .4,
radius : 4,
perspective : 0.5,
ang : null,
CosOrSin1 : null,
CosOrSin2 : null,
enum : {
Wobble : "wobble",
Twirl : "twirl"
},
setDrawing : function (type) {
if (type === this.enum.Twirl){
Blah blah blah
this.cosOrSin2 = Math.sin;
} else if (type === this.enun.Wobble){
Blah blah blah
} else {alert("Wrong enum for DrawCrash");}
},
startDrawing : function () {
blah blah blah
}
}
然后你可以实现它:
var drawCrash = new DrawCash();
但是,您的所有变量在此对象上似乎都是私有的。我想公开一些,你需要将它们放在"这个":
function DrawCash() {
// private variables
var somePrivateVar = 42;
// public variables
this.publicVar = "hello";
}
var drawcash = new DrawCash();
drawcash.publicVar; // returns "hello"
drawcash.somePrivateVar; // undefined
最后,为了在这个"类"上定义一个方法。以有效的方式,您需要扩展该对象原型(Javascript是面向原型的语言):
function DrawCash() { ... }
DrawCash.prototype.someMethod = function() { ... }
var drawcash = new DrawCash();
drawcash.someMethod();
您可以通过阅读本文来了解更多信息,例如:
答案 1 :(得分:0)
DrawCrash是一个普通的旧javascript对象(因此错误):一个对象文字。您只需访问其属性和方法:
DrawCrash.startDrawing();
如果您想使用new运算符,则需要创建一个函数:
function Car(make, model, year) {
this.make = make;
this.model = model;
this.year = year;
}
然后你可以说像
var foo - new Car('plymouth', 'something', 1978);
这里有两种方法的有趣讨论: