我正在使用TypeScript,这是我的代码:
module MySample {
export interface IComparable {
Compare(object1:any,object2:any): number;
}
export class MyComparer implements IComparable {
Compare(object1: any, object2: any): number {
if (typeof (object1) == "number" && typeof(object2)=="number") {
var n: number = object1 - object2;
return n;
}
else if (typeof (object1) == "string" && typeof(object2)=="string") {
return object1 > object2 ? 1 : (object1 == object2) ? 0 : -1;
}
throw Error("Cannot compare a different kind of type together!");
}
}
export class GeneralComparer {
static Comparer(num1:any,num2:any,comparer: IComparable): number {
return comparer.Compare(num1, num2);
}
}
}
现在“编译代码”是:
var MySample;
(function (MySample) {
var MyComparer = (function () {
function MyComparer() {
}
MyComparer.prototype.Compare = function (object1, object2) {
if (typeof (object1) == "number" && typeof (object2) == "number") {
var n = object1 - object2;
return n;
} else if (typeof (object1) == "string" && typeof (object2) == "string") {
return object1 > object2 ? 1 : (object1 == object2) ? 0 : -1;
}
throw Error("Cannot compare a different kind of type together!");
};
return MyComparer;
})();
MySample.MyComparer = MyComparer;
var GeneralComparer = (function () {
function GeneralComparer() {
}
GeneralComparer.Comparer = function (num1, num2, comparer) {
return comparer.Compare(num1, num2);
};
GeneralComparer.Show = function () {
return 1;
};
return GeneralComparer;
})();
MySample.GeneralComparer = GeneralComparer;
})(MySample || (MySample = {}));
//# sourceMappingURL=app.js.map
现在我倾向于将静态方法引用如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>TypeScript HTML App</title>
<link rel="stylesheet" href="app.css" type="text/css" />
<script src="app.js"></script>
<script>
function Ini()
{
var result = new MySample.GeneralComparer.Comparer(1, 2, new MySample.MyComparer());
alert(result);
}
</script>
</head>
<body onload="Ini()">
<h1>TypeScript HTML App</h1>
<div id="content">
</div>
</body>
</html>
这只能给我“[对象,对象]”,为什么?如果我删除“新”,一切顺利......任何人都可以向我解释这个吗?非常感谢!
答案 0 :(得分:0)
当你使用new时,就是创建一个新的对象实例。
当你删除“new”时,它会调用变量MySample来执行比较。
var MySample;
您可以尝试将变量名重命名为“localComparer”,以便更好地理解。
答案 1 :(得分:0)
如果要创建新对象,请使用new运算符。如果您只是在调用函数,请不要使用new
e.g。 :
function foo(){
this.something = 123;
return 123;
}
var a = foo(); // 123
var b = new foo(); // new object { something: 123 }
new
javascript运算符还有很多内容,但这应该可以帮助您入门。