我一直在使用JSLint帮助我重新学习如何正确编码。该程序不喜欢在我的代码中使用this
,所以我决定使用self=Object.create(MyType.prototype)
。使用这种模式有任何陷阱或限制吗?我是否因为避免this
而过于冗长?这是一个如何用原型继承编写构造函数的例子:
function MyType(args) {
var privateVar1 = "value",
self = Object.create(MyType.prototype);
function privateFunction() { )
self.publicMethod1 = function(aa) {
// do stuff with private vars & self. Ex:
var methodVar = privateVar1 + aa;
self.publicProperty = args;
privateFunction();
return methodVar;
};
return self;
}
MyType.prototype = {
publicProperty: "initial value",
publicMethod2: function (aa) { }
}
function MyType2(args) {
var self = Object.create(MyType2.prototype);
return self;
}
MyType2.prototype = Object.create(MyType.prototype);
MyType2.prototype.publicMethod3 = function (aa) { };
经过长时间的裁员,我再次自学JavaScript。我做了大约十年之后。互联网从未真正忘记,但进展仍然存在。因此,一些教程似乎基于较旧的标准/建议,而较新的文章与它们相矛盾。理清哪些文章是最新的和哪些文章是过时的,这变得令人困惑。我可以帮忙。
答案 0 :(得分:2)
JSLint工具只告诉您Douglas Crockford如何使用JavaScript。 JSLint这个名称相当具有误导性,因为它没有根据语言标准验证代码,它根据Douglas Crockfords关于如何使用该语言的观点来验证代码。如果你想按照他的建议写信,那么你就是这么做的。
其他教程不一定是过时或错误的,它们大多只是不同。使用JavaScript的方法有很多种,不仅仅是一种。
就个人而言,我会写:
function MyType(args) {
var privateVar1 = "value";
function privateFunction() { )
this.publicMethod1 = function(aa) {
// do stuff with private vars & this. Ex:
var methodVar = privateVar1 + aa;
this.publicProperty = args;
privateFunction();
return methodVar;
};
}
MyType.prototype = {
publicProperty: "initial value",
publicMethod2: function (aa) { }
}
function MyType2(args) {
}
MyType2.prototype = Object.create(MyType.prototype);
MyType2.prototype.publicMethod3 = function (aa) { };