在另一个问题中,用户指出该new关键字使用起来很危险,并提出了一种不使用的对象创建解决方案new.我不相信这是真的,主要是因为我使用了Prototype,Scriptaculous和其他优秀的JavaScript库,并且每个人都使用了new关键字.
尽管如此,昨天我在YUI剧院观看道格拉斯·克罗克福德的演讲,他说的完全一样,他new在代码中不再使用关键字(Crockford on JavaScript - Act III:Function the Ultimate - 50:23分钟).
使用new关键字"不好" 吗?使用它有哪些优缺点?
我不知道我多久都错过了这个.我一直假设私有实例变量像这样工作,但他们没有.当然,它们是私有的(如非全局的),但变量是跨实例共享的.这导致了一些非常混乱的错误.
我以为我正在遵循一些最好的图书馆实施的最佳实践,但似乎我错过了一些东西.
var Printer = (function(){
var _word;
Printer = function(word){
_word = word;
}
_print = function(){
console.log(_word);
}
Printer.prototype = {
print: _print
}
return Printer;
})();
var a = new Printer("Alex");
var b = new Printer("Bob");
a.print(); //Prints Bob (!)
b.print(); //Prints Bob
Run Code Online (Sandbox Code Playgroud)
我看过这篇文章,但没有描述实现私有实例变量的最佳实践.(这甚至是我想要的名称吗?) JavaScript中私有和实例变量的方法和变量范围
我也查看了这篇文章,但使用'this'关键字是我以前做的.因为它没有混淆我试图避免它.这真的是唯一的方法吗? 在原型继承中实现实例方法/变量