为什么在JavaScript OOP中使用此选项
在JS中,我也会与为什么在JavaScript OOP中使用此选项,javascript,oop,this,Javascript,Oop,This,在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
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: ""
在上面的例子中,使用这个
或不使用都不会影响代码,那么为什么我要使用它,为什么a
的最后一个值打印为空??我将非常感谢你们所有人。正如评论员所提到的,你们使用的是所有全局变量,由于很多原因(主要是围绕意外后果)这些变量都不太好
关于你的问题,你缺少的是:
function Class1(){
a = "";
}
您只需将a
的全局变量从原来的“uff”重置为“”
稍后,当您执行以下操作时:
well.a = "bye"
您正在向名为a
的well
实例添加一个新属性,该属性与您设置的全局变量a
无关
并非毫无意义,但您所描述的内容实际上都不是JavaScript OOP。到目前为止,您所使用的都是对象实例及其属性(以及全局变量)。正如评论员所提到的,您使用的是所有全局变量,由于很多原因(主要是意外后果),这些变量都不太好
关于你的问题,你缺少的是:
function Class1(){
a = "";
}
您只需将a
的全局变量从原来的“uff”重置为“”
稍后,当您执行以下操作时:
well.a = "bye"
您正在向名为a
的well
实例添加一个新属性,该属性与您设置的全局变量a
无关
并非毫无意义,但您所描述的内容实际上都不是JavaScript OOP。到目前为止,您所使用的都是对象实例及其属性(以及全局变量)。正如评论员所提到的,您使用的是所有全局变量,由于很多原因(主要是意外后果),这些变量都不太好
关于你的问题,你缺少的是:
function Class1(){
a = "";
}
您只需将a
的全局变量从原来的“uff”重置为“”
稍后,当您执行以下操作时:
well.a = "bye"
您正在向名为a
的well
实例添加一个新属性,该属性与您设置的全局变量a
无关
并非毫无意义,但您所描述的内容实际上都不是JavaScript OOP。到目前为止,您所使用的都是对象实例及其属性(以及全局变量)。正如评论员所提到的,您使用的是所有全局变量,由于很多原因(主要是意外后果),这些变量都不太好
关于你的问题,你缺少的是:
function Class1(){
a = "";
}
您只需将a
的全局变量从原来的“uff”重置为“”
稍后,当您执行以下操作时:
well.a = "bye"
您正在向名为a
的well
实例添加一个新属性,该属性与您设置的全局变量a
无关
并非毫无意义,但您所描述的内容实际上都不是JavaScript OOP。到目前为止,您所使用的都是对象实例及其属性(以及全局变量)。在JavaScript中,这是指方法正在运行的对象,或构造函数当前正在构建的对象。它不必是用new
构造的对象
var o = {
f: function() { this.a = 2; }
}
o.a = 1;
o.f();
o.a;
// => 2
“a”为空,因为Class1构造函数清除了它的值。未声明的变量将是全局变量,全局范围中的a
是已修改的变量。在JavaScript中,此
引用其方法正在运行的对象,或构造函数当前正在构建的对象。它不必是用new
构造的对象
var o = {
f: function() { this.a = 2; }
}
o.a = 1;
o.f();
o.a;
// => 2
“a”为空,因为Class1构造函数清除了它的值。未声明的变量将是全局变量,全局范围中的a
是已修改的变量。在JavaScript中,此
引用其方法正在运行的对象,或构造函数当前正在构建的对象。它不必是用new
构造的对象
var o = {
f: function() { this.a = 2; }
}
o.a = 1;
o.f();
o.a;
// => 2
“a”为空,因为Class1构造函数清除了它的值。未声明的变量将是全局变量,全局范围中的a
是已修改的变量。在JavaScript中,此
引用其方法正在运行的对象,或构造函数当前正在构建的对象。它不必是用new
构造的对象
var o = {
f: function() { this.a = 2; }
}
o.a = 1;
o.f();
o.a;
// => 2
“a”为空,因为Class1构造函数清除了它的值。未声明的变量将是全局变量,全局范围中的a
是已修改的变量。所有变量都是全局变量,这是一种不好的做法这个
在JavaScript中相当独特,我建议您先在互联网上阅读一些文章。这里有一个很流行的问题,你的所有变量都是全局变量,这是一个糟糕的做法这个
在JavaScript中相当独特,我建议您先在互联网上阅读一些文章。这里有一个很流行的问题,你的所有变量都是全局变量,这是一个糟糕的做法这个
在JavaScript中相当独特,我建议您先在互联网上阅读一些文章。这里有一个很流行的问题,你的所有变量都是全局变量,这是一个糟糕的做法这个
在JavaScript中相当独特,我建议您先在互联网上阅读一些文章。这里有一个很受欢迎的问题需要开始,实际上这个指的是你想要它指的任何东西someOb.someMethod()
只是类似于(someOb.someMethod | | someOb.prototype.someMethod)的语法糖
注意someOb
作为调用的参数。任何对象都可以传入