首页 > 解决方案 > 函数内对象内方法

问题描述

我正在尝试在函数内部的对象中编写一个方法。像这样:

function createMountain(name, continent, heightInMeters) {
  var object = {
    "name": name,
    "continent": continent,
    "heightInMeters": heightInMeters,
    isHigherThan: function() {}
  }
  return object
}

var mountains = [];

var everest = createMountain("Everest", "Asia", 8849)
var montblanc = createMountain("Mont Blanc", "Europe", 4809)
var denali = createMountain("Denali", "North America", 6190)

mountains.push(everest, montblanc, denali)

该方法isHigherThan应接受一个山对象作为参数,如果山高于方法中传递的山,则返回 true,否则返回 false。

everest.isHigherThan(denali) //true
montblanc.isHigherThan(everest) //false

我怎么能写这样的功能?我很挣扎,没有找到解决方案。它也应该没有 ES6。

先感谢您。

标签: javascriptobjectmethods

解决方案


解决方案

function createMountain(name, continent, heightInMeters) {
  return {
    name: name,
    continent: continent,
    heightInMeters: heightInMeters,
    isHigherThan: function (mountain) {
      return this.heightInMeters > mountain.heightInMeters;
    },
  };
}
// let is from es6
let everest = createMountain("Everest", "Asia", 8849);
let montblanc = createMountain("Mont Blanc", "Europe", 4809);
let denali = createMountain("Denali", "North America", 6190);

console.log(everest.isHigherThan(denali));
console.log(montblanc.isHigherThan(everest));


推荐阅读