为什么/我应该如何在JavaScript中使用对象?

0x4*_*2D2 12 javascript programming-languages

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

var obj = {
    hi: function() {
        return "Hello";
    }
}; 
Run Code Online (Sandbox Code Playgroud)

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

function hi() {
    return "Hello";
}
Run Code Online (Sandbox Code Playgroud)

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

Guf*_*ffa 15

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

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());
Run Code Online (Sandbox Code Playgroud)

与较不结构化的相比:

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));
Run Code Online (Sandbox Code Playgroud)

  • @David:对象的优点本身并不能提供组织,但它们是组织一个人信息的一种非常有用的方式.如果您的代码处理有形实体(人员,出版物,购物车订单等),这些实体可以封装并表示为整个对象而不仅仅是少数几个数据元素,那么组织它们是有意义的.请注意,任何支持此类数据结构的语言都是如此,而不仅仅是JavaScript. (2认同)

Mik*_*uel 5

对象很有用,因为

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

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