使用 `this` 与 Object.create(prototype)
Using `this` vs Object.create(prototype)
我一直在使用 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。自从我做任何事情以来已经大约十年了。互联网从未真正忘记,但进步仍在发生。所以一些教程似乎是基于旧的 standards/suggestions 而新的文章与它们相矛盾。区分哪些文章是最新的,哪些是过时的变得越来越混乱。我需要一些帮助。
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) { };
我一直在使用 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。自从我做任何事情以来已经大约十年了。互联网从未真正忘记,但进步仍在发生。所以一些教程似乎是基于旧的 standards/suggestions 而新的文章与它们相矛盾。区分哪些文章是最新的,哪些是过时的变得越来越混乱。我需要一些帮助。
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) { };