如何在经典的jscript中创建一个类? (不是jscript.net)
并且,如何引用这个类?。
我试过
class someclass {
}
但它不起作用。
答案 0 :(得分:6)
jscript中没有类。您可以创建一个对象构造函数:
function someclass() {
this.answer = 42;
}
你像课一样使用它:
var obj = new someclass();
要制作方法,可以在其原型中添加函数:
someclass.prototype.getAnswer = function() {
return this.answer;
}
用法:
var ans = obj.getAnswer();
答案 1 :(得分:3)
没有这样的类,但这是一个如何获得基本的面向对象功能的简单示例。如果这就是你所需要的,那很好,但是如果你追求其他类的功能,比如继承,那么比我自己更有知识的人将不得不提供帮助。
function SomeClass(n) {
this.some_property = n;
this.some_method = function() {
alert(this.some_property);
};
}
var foo = new SomeClass(3);
var bar = new SomeClass(4);
foo.some_method();
bar.some_property += 2;
bar.some_method();
答案 2 :(得分:2)
你真的没有关于Javascript的课程,但你有类似的东西。 Check this example on jsFiddle
var classA = function() { // declaring a "class"
this.something = "Text"; // a public class field
};
classA.prototype.b = " b "; // a class field
classA.c = "c"; // a static field
classA.prototype.d = function(x) { // a public class method
};
classA.e = function(x){ // a public static method
};
var a = new classA(); // instantiate a class
答案 3 :(得分:1)
使用类的名称定义函数。其中定义为this.whatever
的任何var都将充当类成员:
function SomeClass() {
this.a;
this.b;
}
然后向原型添加方法:
SomeClass.prototype.methodA = function() {
this.a++;
}
SomeClass.prototype.methodB = function() {
this.b++;
}
我相信你也可以像这样在构造函数中定义方法,但是我很长时间没有使用这种语法。
function SomeClass {
this.a = 0;
// Method definition
this.methodA = function() {
this.a++;
}
}
答案 4 :(得分:0)
忍受我,因为我自己只是隐约知道:
Javascript没有课程。它有对象。要复制类,请创建一个对象。要创建该“类”的“实例”,请复制该对象。有几种方法可以做到这一点。一种是创建一个返回一个对象的函数,然后调用该函数,如下所示:
function Car(brand, year) {
return {
brand: brand,
year: year
}
}
var modelT = Car("Ford", 1900); //or whenever the model T came out
modelT.brand == "Ford" //true
modelT.year == 1900; //true
另一种方法是创建一个作为函数的对象并创建该对象的“新”。问题是你必须使用new
,这是相当误导的。
var Car = function(make, year) {
this.make = make;
this.year = year;
};
var x = new Car("ford", 1990);
//same tests hold true from earlier example
在我看来,最好的方法是使用Object.create
因为它最能代表实际发生的事情:
var Car = (function() {
var self = Object.create({}, {
make: {
value: "Ford"
}
year: {
value: 1900
}
});
return self;
})();
var modelT = Object.create(Car, {
make: {
value: "Model T"
},
year: {
value: 1901
}
});
不幸的是,这非常麻烦。
这是一个非常有用的资源:JavaScript "classes"
答案 5 :(得分:0)
Jscript中的类(.Net?):http://www.functionx.com/jscript/Lesson05.htm
Powershell支持它(以及VisualBasic,甚至F#)。现在,我看到这个问题说不在.net中。但是为了辩护,我正在搜索jscript类,而这正是我着陆的地方。
Add-Type @'
class FRectangle {
var Length : double;
var Height : double;
function Perimeter() : double {
return (Length + Height) * 2; }
function Area() : double {
return Length * Height; } }
'@ -Language JScript
[frectangle]::new()
Length Height
------ ------
0 0