Функция возвращается неопределенной в Javascript - PullRequest
0 голосов
/ 23 ноября 2018
function people (name, age) {
  this.name = name;
  this.age = age;
}

var rob = new people("robert jr", 41);
var sam = new people("sam davies", 25);

function isOlderThan(age) {
  if(rob.age > sam.age) 
    return true;
  else return false;
}

Я пытался запустить его с этим sam.isOlderThan (rob);

Но это не работает.Я новичок в этом, любая помощь?

Ответы [ 5 ]

0 голосов
/ 23 ноября 2018

Привет и добро пожаловать в StackOverflow.Предполагая, что вы хотите использовать функцию people для определения типа класса, а isOlderThan как тип функции этого класса - обратите внимание на изменения.

  1. Функции конструктора (такие как People) обычно пишутся с заглавной буквы
  2. Для связывания isOlderThan с существующим классом - вы должны использовать синтаксис прототипа, как показано ниже.
  3. Внутри функции isOlderThan мы делаем ссылку на this - которая указывает текущий объект, для которого была вызвана функция isOlderThan than.

Теперь мы можем вызывать функцию isOlderThan для каждого Peopleобъект, который мы создаем.

function People(name, age) 
{
  this.name = name;
  this.age = age;
}

var rob = new People("robert jr", 41);
var sam = new People("sam davies", 25);


People.prototype.isOlderThan = function(age) {
    if (this.age > age) 
        return true;
     else return false;
}

console.log(sam.isOlderThan(50))
console.log(rob.isOlderThan(sam.age))
enter code here
0 голосов
/ 23 ноября 2018

Проверьте, поможет ли эта скрипка:

function Person(name, age) {
  this.name = name;
  this.age = age;
}

var rob = new Person("robert jr", 41);
var sam = new Person("sam davies", 25);

function isOlderThan(rob, sam) {
  if (rob.age > sam.age) {
    return true;
  } else {
    return false;
  }
}

console.log(`Rob is older than Sam: ${isOlderThan(rob, sam)}`);

https://jsfiddle.net/ao2ucrmq/1/

0 голосов
/ 23 ноября 2018

//  If you want to be able to call this as sam.isOlderThan()
//  you need to use a prototype to add that function to the persons
//  so they all have that function bound to them.
function person (name, age) {
  this.name = name;
  this.age = age;
}
person.prototype.isOlderThan = function( other_person ) {
  return this.age > other_person.age;
};
var rob = new person("robert jr", 41);
var sam = new person("sam davies", 25);

console.log( sam.isOlderThan( rob ) );
console.log( rob.isOlderThan( sam ) );
0 голосов
/ 23 ноября 2018

Функция isOlderThan не определена для людей.

Вы можете использовать прототип для людей, если хотите назвать его как sam.isOlderThan(rob);

function People(name, age) {
  this.name = name;
  this.age = age;
}

var rob = new People("robert jr", 41);
var sam = new People("sam davies", 25);

People.prototype.isOlderThan = function(p) {
  return this.age > p.age;
};

console.log(sam.isOlderThan(rob));
console.log(rob.isOlderThan(sam));
0 голосов
/ 23 ноября 2018

Вы не можете использовать sam.isOlderThan, поскольку в функции people не определена функция isOlderThan (соответствует классу других языков).

isOlderThan определено в глобальной области видимости.

Таким образом, вы можете запустить его как isOlderThan() или window.isOlderThan() (при условии, что вы находитесь в браузере)

Нет необходимости передавать age, rob или sam какони определены в глобальной области видимости и доступны внутри функции isOlderThan.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...