【发布时间】:2016-05-01 01:52:09
【问题描述】:
我正在寻找这种结果:
var Dog = function() {
this.tail = 1;
var tail = this.tail;
this.print = function() {
console.log(tail);
};
};
我在哪里使用
tail = this.tail;
避免在打印函数体中使用 this 关键字。然而,这种方法似乎有点老套,我觉得他们必须是一种更好/更标准/不同的方式来做这种事情。
我希望这样做的原因是因为我需要将一些以前是全局变量和函数的代码转换为对象构造器,并且在所有变量前面加上 this 关键字会很多工作量,并且会使代码更难看。
任何见解都是有用的,感谢您查看。
【问题讨论】:
-
您可以改用闭包。但它会隐藏所有变量,使其不被对象外部访问。
-
"会让代码变得更丑陋。" --- 它不会。
-
使用
var(或类似的)来声明变量!!! -
现在我明白你为什么要这么做了!我认为 Oriol 的意思是你应该写
var tail = this.tail而不是tail = this.tail。我同意这样更好。 -
如果对
this的持续引用让您难以接受,您可能想尝试CoffeeScript。除非您使用类似元 JavaScript 的语言,否则这在 JavaScript 中是不可避免的。@tailis equivalent tothis.tail。你使用 JavaScript 的次数越多,this对你的困扰就越少。这就像在抱怨“the”在英语中的出现频率如此之高。
标签: javascript oop prototype