2

我是 javascript 的菜鸟。

我想知道为什么我们在 javascript 中定义属性和函数时必须使用它。例如

   function Apple (type) {
    this.type = type;
    this.color = "red";
    this.getInfo = function() {
        return this.color + ' ' + this.type + ' apple';
    };
}

var apple = new Apple('macintosh');
apple.color = "reddish";
alert(apple.getInfo());

我知道这是指调用该类的对象。我们在 c++ 和 java 中使用了它。我们定义了一个类似这样的类

class apple {
        char type ;
        char color ;
        returntype getInfo (){
          this.color = 'red';
           this.type = 'something'

    }

我认为在 javascript 中使用它来声明属性也很奇怪。这背后有什么原因吗?

4

2 回答 2

1

JavaScript 中没有类。一切都是对象。因此,您需要操作该对象。

使用new:调用函数时,this将引用您可以编辑的新创建的对象。

如果您在没有 的情况下调用您的函数new,那么在您的示例中this实际上将是window(browser) 或global(server-side)。

要向您通常执行的对象添加新字段:object.newfield = somevalue,但这里object存储在 variable 中this

过程类似于:

new function-> create new object-> pass it as "this" to function-> function works->return updated "this"

function works部分是您的功能代码实际执行的位置。

于 2013-07-24T17:08:03.077 回答
0

这是一个奇怪的 JavaScript 东西,一切都是对象。JavaScript 中的“类”实际上只是一个对象的构造函数。如果你在没有 this 的情况下调用它(只是 Apple() 或 MyClass()),变量只是局部变量。当您开始添加 OOP 时,您会遇到一个场景,您需要能够区分对象属性和构造函数(或方法的,就此而言)的局部变量。因此,this关键字用于指向当前对象的引用(因此您访问的是对象的属性,而不是函数当前范围的属性)

或者..因为有人这么说,而我们,程序员,不得不忍受它;)

于 2013-07-24T17:10:49.010 回答