是否有一种机制可以输入JavaScript变量,因此可以确定赋值返回的数据类型?由于JavaScript是一种动态语言,这是不可能的吗?
答案 0 :(得分:2)
JavaScript变量可以包含许多数据类型:数字,字符串,数组,对象
我们可以使用typeof
找出变量的类型。
if(typeof myvar === 'number') {
// code you want
}
或者你可以使用Object.prototype.toString
,这样你就不必识别对象和对象之间的区别。原始类型
> Object.prototype.toString.call(80)
"[object Number]"
> Object.prototype.toString.call("samouray")
"[object String]"
希望这很有帮助。
答案 1 :(得分:0)
您可以使用预编译器在开发时使用例如添加类型(和其他功能)。打字稿:
class Greeter {
greeting: string;
constructor(message: string) {
this.greeting = message;
}
greet() {
return "Hello, " + this.greeting;
}
}
var greeter : Greeter = new Greeter("world");
TypeScript是一组超级JavaScript(意味着您可以按原样使用现有的JavaScript代码并将其传递给TypeScript编译器),并且开发用于为开发人员提供类型安全,更简单的继承等。它编译为纯JavaScript。 / p>
要获得第一印象,您可以play with the compiler获得第一次亲身体验。
在运行时获取实际类型
由于TypeScript编译为纯JavaScript,因此不能使用typeof
来获取TypeScript中声明的类型名称(这将返回例如上面定义的Greeter的对象)。要解决此问题,需要使用以下JavaScript方法:
function getClassName(obj) {
var funcNameRegex = /function (.{1,})\(/;
var results = (funcNameRegex).exec(obj["constructor"].toString());
return (results && results.length > 1) ? results[1] : "";
}
有关详细信息,请参阅我在上面找到上述代码段的How do I get the name of an object's type in JavaScript?。