如何在经典 jscript 中创建一个类?(不是 jscript.net)
而且,如何引用这个类?
我试过了
class someclass {
}
但它不起作用。
如何在经典 jscript 中创建一个类?(不是 jscript.net)
而且,如何引用这个类?
我试过了
class someclass {
}
但它不起作用。
jscript 中没有类。您可以创建一个对象构造函数:
function someclass() {
this.answer = 42;
}
您可以像使用课程一样使用它:
var obj = new someclass();
要创建方法,您可以向其原型添加函数:
someclass.prototype.getAnswer = function() {
return this.answer;
}
用法:
var ans = obj.getAnswer();
没有这样的类,但这里有一个如何获得基本面向对象功能的简单示例。如果这就是您所需要的,那很好,但是如果您追求类的其他特性,例如继承,那么比我更有知识的人将不得不提供帮助。
function SomeClass(n) {
this.some_property = n;
this.some_method = function() {
WScript.Echo(this.some_property);
};
}
var foo = new SomeClass(3);
var bar = new SomeClass(4);
foo.some_method();
bar.some_property += 2;
bar.some_method();
最近:
2011年的回答:
你真的没有关于 Javascript 的课程,但你有类似的东西。在 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
使用类的名称定义一个函数。在其中定义的任何 varthis.whatever
都将充当类成员:
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++;
}
}
请耐心等待,因为我自己只是隐隐约约地掌握了这一点:
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“类”
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