首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么向JavaScript引用类型添加这样的方法不起作用?

为什么向JavaScript引用类型添加这样的方法不起作用?
EN

Stack Overflow用户
提问于 2016-01-23 00:46:56
回答 1查看 56关注 0票数 0

假设我有这样的构造函数:

代码语言:javascript
运行
复制
function Person(firstName, lastName) {
   this.firstName = firstName;
   this.lastName = lastName;
}

我想给它添加一些方法。

为什么要这样:

代码语言:javascript
运行
复制
Person.prototype.getFullName = function() {
    return this.firstName + " " + this.lastName;
};

是做这件事的方法,而不是这样:

代码语言:javascript
运行
复制
Person.getFullName = function() {
    return this.firstName + " " + this.lastName;
};

我不知道为什么我会被否决,所以我会很感激,如果被否决的选民会增加评论与实际的理由反对票。这将帮助我更好地表达我未来的问题。

我在一定程度上理解了原型背后的继承概念。至少在初级水平的教程,文章和书籍中所显示的程度。

让我困惑的可能是我在Java和类术语方面的背景,这在JavaScript中不是一回事。

我想这定义了一个类Person

代码语言:javascript
运行
复制
function Person(firstName, lastName) {
   this.firstName = firstName;
   this.lastName = lastName;
}

当我使用该类创建对象时:

代码语言:javascript
运行
复制
var myObject = new Person("John", "Doe");

我仍然可以向该对象添加一些新的属性或方法:

代码语言:javascript
运行
复制
myObject.getFullName = function() {
    return this.firstName + " " + this.lastName;
};

现在只有myObject才会有这个新方法getFullName,非常清楚。

代码语言:javascript
运行
复制
var myObject2 = new Person("Daniel", "Cook");

对于myObject2,仍然没有明确的getFullName方法。

一旦我将一个方法添加到我的“类”Person的原型中,它将被用该“类”创建的所有对象继承:

代码语言:javascript
运行
复制
Person.prototype.getFullName = function() {
    return this.firstName + " " + this.lastName;
};

现在,即使是myObject2,也有getFullName方法。安全。

好的。我想我是在思考这个问题的根源。延长这篇文章对我有帮助。

函数Person也是一个对象,对吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-23 00:51:01

myObject.methodName = function() {};向对象myObject添加了一个名为methodName的方法。这意味着您可以直接从myObject调用它,并且不需要创建实例。

简单地说,你只需这样做就可以了:

代码语言:javascript
运行
复制
myObject.methodName();

myObject.prototype.methodName = function() {};向对象myObject原型添加了一个名为methodName的方法。这意味着它存在于myObject的每个实例中,但不能直接从myObject调用它。

你这样叫它:

代码语言:javascript
运行
复制
var someInstance = new myObject();
someInstance.methodName();

在这种情况下,myObject.methodName();会生成一个错误!

这两种方法都是在object上实现JavaScript的有效方法。只是他们背后有一个不同的概念。

为了更深入地了解这两种方法之间的差异,我建议您看一看我的文章The many ways to implement OOP in Javascript

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

https://stackoverflow.com/questions/34958322

复制
相关文章

相似问题

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