gre*_*sea 5 javascript templates class
我只是JavaScript的新手.我想写一个像C++这样的JS模板类.例如:
template <typename T>
class A
{
public:
A(T x)
{
this.a=x;
}
~A()
{
}
void print()
{
std::cout<<a<<std::endl;
}
private:
T a;
};
Run Code Online (Sandbox Code Playgroud)
我们可以像这样使用这个类:
A<int> test(2);
test.print();
Run Code Online (Sandbox Code Playgroud)
对于C++,它很简单.但在JS中,它是如何解释的?非常感谢.
Javascript不需要模板来处理通用类型,因为Javascript是一种动态类型化的语言。这意味着在Javascript中,函数可以接受任何类型的参数。
为了实现与您的问题中的示例模板相同的功能,可以使用以下(更短的)Javascript代码和对象常量来实现:
var A = {
print: function(value) {
document.write(value);
}
}
Run Code Online (Sandbox Code Playgroud)
可以这样使用:
A.print(2);
Run Code Online (Sandbox Code Playgroud)
如果您希望代码与C ++更紧密地对应,则可以使用以下方法通过函数代替:
var A = function(value) {
return {
print: function() {
document.write(value);
}
}
}
Run Code Online (Sandbox Code Playgroud)
可以这样使用:
var test = A(2);
test.print();
Run Code Online (Sandbox Code Playgroud)
你可以这样做:
var A = function ( x ) {
var a = x;
this.print = function () {
console.log(a);
};
};
var test = new A(2);
test.print(); // -> 2
Run Code Online (Sandbox Code Playgroud)
在这种情况下,变量a是私有的,函数print是公共的(与 的任何其他属性一样this),并且A是模板(原型对象)的构造函数。
| 归档时间: |
|
| 查看次数: |
4111 次 |
| 最近记录: |