为什么/如何使用JavaScript中的对象?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (72)

我理解如何实例化对象并调用它们,但我找不到在脚本中使用它们的理由。我可以

var obj = {
    hi: function() {
        return "Hello";
    }
}; 

但为什么我不能像以下一样做:

function hi() {
    return "Hello";
}

我从来没有理解为什么我应该使用原型。我用JavaScript做的大部分事情都可以在没有对象的情况下完成。但我想使用对象。什么是对象以及我应该使用它们的原因是什么?

提问于
用户回答回答于

例如,对象可用于从属于一起的值中创建单个单元。例:

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

Person.prototype = {
  getFullName: function() { return this.firstName + ' ' + this.lastName; },
  isMale: function() { return this.gender == 'Male'; },
  isFemale: function() { return this.gender == 'Female'; }
};

var amanda = new Person('Amanda', 'Smith', "Female", 42);
var john = new Person('John', 'Doe', 'Male', 72);

alert(amanda.getFullName());
alert(john.isMale());

相比较少结构化:

function getFullName(firstName, lastName) {
  return firstName + ' ' + lastName;
}

function isMale(gender) {
  return gender == 'Male';
}

function isFemale(gender) {
  return gender == 'Female';
}

var amandaFirstName = 'Amanda';
var amandaLastName = 'Smith';
var amandaGender = 'Female';
var amandaAge = 42;
var johnFirstName = 'John';
var johnLastName = 'Doe';
var johnGender = 'Male';
var johnAge = 72;

alert(getFullName(amandaFirstName, amandaLastName));
alert(isMale(johnGender));
用户回答回答于

对象很有用,因为

  1. 他们是有状态的。
  2. 它们可以存储字符串和数据之间的关系。
  3. 通过将问题分解为收集相关操作和状态的对象,可以更容易地分解问题。

如果不需要非全局状态,不需要查找表,并且问题很小或更容易在功能上分解,那么请不要使用对象。

扫码关注云+社区

领取腾讯云代金券