有关在JavaScript中向对象添加方法的说明?

时间:2012-03-31 18:25:00

标签: javascript

在以下函数中,其内部的方法称为newlastname

function person(firstname,lastname,age,eyecolor)
{
  this.firstname=firstname;
  this.lastname=lastname;
  this.age=age;
  this.eyecolor=eyecolor;

  this.newlastname=newlastname;
}


function newlastname(new_lastname)
{
  this.lastname=new_lastname;
}

this.newlastname=newlastname;行中发生了什么?第一个newlastname是指什么?我感谢任何提示或建议。

2 个答案:

答案 0 :(得分:2)

在这行代码中:

this.newlastname=newlastname;

第一个newlastnameperson对象上的属性。

第二个newlastname是对newlastname()函数的引用。

所以,当你这样做时:

this.newlastname=newlastname;   

您正在person对象的属性中存储对该函数的引用。这将允许以下代码工作:

var p = new person("Ted", "Smith", 31, "blonde");
p.newlastname("Bundy");

执行p.newlastname("Bundy");时,它会在名为person的{​​{1}}对象上查找属性。当它找到该属性时,它将执行该函数并将其传递newlastname并将"Bundy"设置为特定的this对象。

答案 1 :(得分:1)

当你在函数内部this.x = x(所有函数都是对象)时,第一个x成为对象的属性。因此,您可以在对象内的任何位置执行this.x来访问其值。例子 -

    function test (x)
    {
        this.x = x + 2; // the first x is an property of test. the second is the passed argument
        return this.x;
   }

   console.log(test(2)); // 4

您还可以执行以下操作来检查测试的所有属性和方法

console.log(new test(2));