【发布时间】:2011-08-18 16:19:23
【问题描述】:
以下代码改编自this answer
function MessageClass() {
var self = this;
this.clickHander = function(e) { self.someoneClickedMe = true; };
var _private = 0;
this.getPrivate = function() { return _private; };
this.setPrivate = function(val) { _private = val; };
}
ErrorMessageClass.prototype = new MessageClass();
function ErrorMessageClass() {
MessageClass.apply(this, arguments);
}
var errorA = new ErrorMessageClass();
var errorB = new ErrorMessageClass();
errorA.setPrivate('A');
errorB.setPrivate('B');
console.log(errorA.getPrivate());
console.log(errorB.getPrivate());
原来的帖子没有MessageClass.apply(this, arguments);,因为它的目的是展示继承在 Javascript 中是如何出错的。
我的问题是:ErrorMessageClass.prototype = new MessageClass();之前 ErrorMessageClass 构造函数甚至被宣布为不好的做法?我的理解是,像这样调用未声明的标识符会导致发生静默声明,结果被放置在全局窗口对象上,我理解这是不好的。
是这种形式吗:
function ErrorMessageClass() {
MessageClass.apply(this, arguments);
}
ErrorMessageClass.prototype = new MessageClass();
被认为是更好的做法? This link 显示了上面最初编写的代码,这就是我什至尝试它的原因。这位博主是否知道一些我不知道的事情(很可能)?
编辑
下面的答案中有很多很棒的信息,但我确实想强调this link,它确实完美地解释了事情
【问题讨论】:
标签: javascript