"这" javascript中的关键字(作为实例)

时间:2015-11-22 04:07:47

标签: javascript this instance

AFAIK"这"当"属性"之间发生冲突时使用&安培; "参数"功能。
请在下面找到我的代码。

<script>
    function person(firstName, lastName, age, eyeColor) {
        this.firstName = firstName;
        this.lastName = lastName;
        this.fullName = function() {
            return this.firstname + " " + this.lastname
        }
    }
    var p = new person();
    document.write("fullname is " + p.fullName());
</script>

如果我对以下事项感到错误,请在此纠正我

  

this.firstName包含&#34; this&#34;因为person包含firstName作为参数并希望作为person的属性   我的怀疑是   this.fullName也有&#34;这个&#34;在它甚至认为没有fullName的参数。可能我错了(读&#34;这&#34;实际创建一个实例)。
  如果以上是真的,它实际上创建了一个实例    然后我的问题是   它是在var p = new person()中创建实例的,为什么我们要在person中创建fullName属性的实例

3 个答案:

答案 0 :(得分:0)

希望这有帮助

  1. this.firstname包含“this”因为person包含firstname作为参数并且想要作为person的属性。 - 错误
  2. this用于将任何值赋给对象的属性(Person类的实例)

    this.firstName = your_var这会将your_var的值分配给firstName对象的Person属性,如果your_var在参数中或由某个局部变量创建,则无关紧要您 您可以将任何值分配给对象的属性

    1. 请注意,“此”实际上会创建一个实例 - 错误
    2. this是指创建的实例,不会创建实例

      1. 您不是在这里创建实例全名,您正在做的是为person对象创建一个实例方法,稍后您可以使用它来获取该人的全名

答案 1 :(得分:0)

如果您运行此代码,则会出现以下错误:

Maybe/Either

方法调用的大小写出错。 更正后的代码如下:

Uncaught TypeError: p.fullname is not a function on line 10

答案 2 :(得分:0)

您的属性就像 > aa,bb ,并且您将它们作为fooBar返回,这些地方:

foobar

也在这里:

this.firstName = firstName; // firstName
this.lastName = lastName; // lastName
//but below as firstname, lastname instead of firstName and lastName
return this.firstname + " " + this.lastname

但您将该功能称为 this.fullName = function(){ ... }

另外我认为,由于p.fullname()返回fullName()firstName,因此可探测需要在创建实例时传递这些值,如果您要请致电lastName因为此功能需要它们,否则您将获得fullName(),如下所示:

undefined

现在它正在运作:JS Fiddle

var p = new person('Foo', 'Bar');