1

我是java脚本的新手我有一个小问题这个小代码它不起作用它是关于对象和函数的

var person = {
firstName : "kevin",
lastName : "sandigo"}

function getFullName() {
return this.firstName + " " + this.lastName;
}


alert(person.getFullName());
4

3 回答 3

3

如果您希望该函数成为该特定对象的方法:

var kevin = {firstName: "kevin", lastName: "sandigo"}

person.getfullName = function() {
  return this.firstName + " " + person.lastName
}

alert(kevin.getFullName())

或者,如果您想要一种更像类的方法

function Person(firstName, lastName) {
  this.firstName = firstName
  this.lastName  = lastName
}

Person.prototype.getFullName = function() {
  return this.firstName + " " + person.lastName
}

var kevin = new Person("kevin", "sandigo")

alert(kevin.getFullName())
于 2013-01-29T04:51:53.317 回答
2

您应该将对象传递给函数,并使用该参数访问其属性:

var person = {
    firstName: "kevin",
    lastName: "sandigo"
};

function getFullName (obj) {
    return obj.firstName + " " + obj.lastName;
}

alert( getFullName(person) );

如果你想创建一个可以重用的类,你必须在prototype

function Person (firstName, lastName) {
    this.firstName = firstName;
    this.lastName = lastName;
}

Person.prototype.getFullName = function () {
    return this.firstName + " " + this.lastName;
};

var kevin = new Person("kevin", "sandigo");

alert( kevin.getFullName() );
于 2013-01-29T04:50:12.540 回答
0

this在函数中使用,但this指的是调用函数的对象......在这种情况下,是窗口对象。

您有两个选项可以访问函数中的值。在另一条评论中提到了一种方法......将对象传递给函数:

var person = {
  "firstName" : "Kevin",
  "lastName"  : "Sandigo"
};

function getFullName(obj){
  return obj.firstName + " " + obj.lastName;
}

alert(getFullName(person));

另一种选择是将对象作为上下文传递给函数。这是使用call方法完成的。例子:

var person = {
  "firstName" : "Kevin",
  "lastName"  : "Sandigo"
};

function getFullName(){
  return this.firstName + " " + this.lastName;
}

alert(getFullName.call(person));
于 2013-01-29T04:59:49.097 回答