首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么/如何在JavaScript中使用对象?

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

Stack Overflow用户
提问于 2011-08-04 01:29:23
回答 5查看 9.5K关注 0票数 12

我知道如何实例化对象并调用它们,但我就是找不到在我的脚本中使用它们的理由。我能做到

代码语言:javascript
复制
var obj = {
    hi: function() {
        return "Hello";
    }
}; 

但是为什么我不能像这样做:

代码语言:javascript
复制
function hi() {
    return "Hello";
}

我也从来没有理解过为什么我应该使用原型。我在JavaScript中做的大多数事情都可以在没有对象的情况下做得很好。但我想使用对象。对象是用来做什么的,我应该使用它们的原因是什么?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-08-04 01:45:45

对象很有用,例如,将属于一起的值组成一个单元。示例:

代码语言: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());

与结构较差的相比:

代码语言:javascript
复制
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));
票数 16
EN

Stack Overflow用户

发布于 2011-08-04 01:34:34

如果没有你所说的对象,你将会到处都是松散的函数。这通常会导致代码很难维护。最低限度,对象使您能够将函数集中在一起以模拟名称空间--这是最低限度的。

票数 4
EN

Stack Overflow用户

发布于 2011-08-04 01:34:57

在您的简单示例中,编写一个半“类”/对象来保存该方法确实没有任何意义。但是当您的代码增长时,您将获得越来越多的函数和方法,您不会真的希望将它们都放在一个大的(全局)名称空间中。这实在是太难维护了,在以后的某个时刻,包括你在内,没有人会理解这些代码。

这是将方法包装在一个对象/“类”中的第一个好理由。另一个很好的原因是可重用性。如果您正在编写能够继承其方法的对象,则可以重新创建另一个对象并从那里对其进行抽象。最简单的概念,但是如果你想在你的应用程序中把“事物”描述为模块/对象,你就需要使用它。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6930601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档