为什么要在JavaScript OOP中使用它
Why use this in JavaScript OOP
以及许多人中,我也对 JS 中的this
感到困惑,因为我知道如何在 DOM
中使用 this
但在OOP
中无法理解
a = "uff";
function Class1() {
a = "";
}
function Class2() {
this.a = "";
}
well = new Class1();
oh = new Class2();
well.a = "bye";
oh.a = "ok";
console.log(well.a); // output: bye
console.log(oh.a); // output: ok
console.log(a); // output: ""
在上面的示例中,是否使用 this
不会影响代码,那么我为什么要使用它以及为什么 a
的最后一个值打印为空? 我将非常感谢你们所有人。
正如评论者所提到的,您正在使用所有全局变量,由于很多原因(主要是围绕意外后果),这些变量并不好。
至于你的问题,你缺少的是这里:
function Class1(){
a = "";
}
您只需将 a
的全局变量从原来的"uff"重置为 "。
稍后,当您执行以下操作时:
well.a = "bye"
您正在向well
实例添加一个名为 a
的新属性,该属性与您设置的全局变量a
无关。
不是没有,但你所描述的实际上都不是JavaScript OOP。到目前为止,您使用的只是对象实例及其属性(以及全局变量)。
在
JavaScript中,this
引用其方法是正在运行的对象,或者构造函数当前正在构建的对象。 它不必是用new
构造的对象。
var o = {
f: function() { this.a = 2; }
}
o.a = 1;
o.f();
o.a;
// => 2
"a"为空,因为 Class1 构造函数清除其值。 未声明的变量将是全局变量,全局范围内的a
是修改后的变量。
相关文章:
- Google Data API上的OOP Javascript回调方法
- 如何在浏览器中使用基于类的OOP JavaScript
- 对创建OOP Javascript的误解
- 尝试访问方法的 OOP JavaScript
- 每次单击按钮时,如何创建新对象并将旧对象存储在数组中?OOP JavaScript
- 无法删除事件侦听器 TypeScript/OOP JavaScript
- 普通的OOP Javascript:将localStorage视为数组不起作用
- Debug OOP javascript
- 如何从OOP Javascript开始
- OOP JavaScript:“;这个“;必要的方法
- OOP JavaScript - this reference
- Javascript事件addEventListener为同一函数多次注册;使用OOP Javascript
- 为什么在OOP javascript中使用object.prototype.constructor
- OOP Javascript-通过另一个公共方法从公共方法访问特权方法
- 最佳OOP JavaScript安全实践
- OOP Javascript "get property"必要的方法
- 未捕获的ReferenceError: myVar未定义;OOP Javascript
- OOP JavaScript - 初学者示例
- createjs.Shape()不能与OOP JavaScript一起工作
- 如何在JetBrains Webstorm/PHPStorm中编写oop javascript(带继承)来获得自动完成/