&引用;这";javascript中的关键字(作为实例)

&引用;这";javascript中的关键字(作为实例),javascript,this,instance,Javascript,This,Instance,AFAIK“this”用于函数的“属性”和“参数”之间发生冲突时。 请在下面找到我的代码 <script> function person(firstName, lastName, age, eyeColor) { this.firstName = firstName; this.lastName = lastName; this.fullName = function() { return this.f

AFAIK“this”用于函数的“属性”和“参数”之间发生冲突时。
请在下面找到我的代码

<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=firstName;
this.lastName=lastName;
this.fullName=函数(){
返回this.firstname+“”+this.lastname
}
}
var p=新人();
document.write(“全名为”+p.fullname());
如果我在以下方面有错误,请纠正我

this.firstName包含“this”,因为person包含firstName作为参数,并希望作为person的属性。
我的怀疑是 this.fullName中也有“this”,即使没有fullName参数。可能是我错了(读到“this”实际上创建了一个实例)。
如果上面是真的,它实际上创建了一个实例 那么我的问题是 它正在var
p=newperson()
中创建实例,为什么我们要在person内部创建
fullName
属性的实例

希望这有帮助

  • this.firstname包含“this”,因为person包含firstname作为参数,并希望作为person的属性。-错误
  • 用于为对象(Person类实例)的属性指定任何值

    this.firstName=your_var
    这将
    your_var
    的值分配给
    Person
    对象的
    firstName
    属性。无论您的_var是在参数中还是在您创建的某个本地var中 可以为对象的属性指定任何值

  • 阅读“this”实际上创建了一个实例-错误
  • 引用已创建的实例,而不创建实例

  • 在这里您并没有创建实例全名,您所做的是为person对象创建一个实例方法,稍后您可以使用它来获取person的全名

  • 您会注意到,如果运行此代码,会出现以下错误:

    Uncaught TypeError: p.fullname is not a function on line 10
    
    方法调用的大小写有错误。 更正代码如下:

    document.write("fullname is " + p.fullName());
    

    您的属性类似于
    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()
    ,可能需要在创建实例时传递这些值,因为此函数需要这些值,否则会得到
    未定义的
    ,如下所示:

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

    现在它正在工作:

    职能人员(名字、姓氏、年龄、眼睛颜色){
    this.firstName=firstName;
    this.lastName=lastName;
    this.fullName=函数(){
    返回this.firstName+“”+this.lastName
    }
    }
    var p=新人(‘Foo’、‘Bar’);
    //检查控制台
    
    log(“fullname是”+p.fullname())可能相关:如果我可能在关注您的问题,则无需在
    个人
    中设置
    全名
    。它可以在
    person.prototype
    上设置,并应用于
    person
    的所有实例。提示:JavaScript区分大小写。只是一个问题,在创建person实例时不应该设置参数吗?比如:
    var p=newperson('foo,'bar')