Я новичок в Java-скрипте, у меня небольшая проблема, этот маленький код, он не работает, это касается объекта и функции

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

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


alert(person.getFullName());
1
cmsgun 29 Янв 2013 в 08:48

3 ответа

Лучший ответ

Вы должны передать свой объект в функцию и использовать этот аргумент для доступа к его свойствам:

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() );
2
Joseph Silber 29 Янв 2013 в 04:50

Если вы хотите, чтобы функция была методом для этого конкретного объекта:

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())
3
Nevir 29 Янв 2013 в 04:51

Вы используете 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));
0
THEtheChad 29 Янв 2013 в 04:59