首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >原型对象

原型对象
EN

Stack Overflow用户
提问于 2012-07-01 08:45:15
回答 1查看 100关注 0票数 0

我对原型不是很熟悉,我确信这是不正确的实现,但我已经整理了一个我试图实现的小示例。

我可以使原型成为文本对象而不是函数,但是我遇到了无法访问正在创建原型的对象(在本例中为Person)内的变量/属性的问题。

代码语言:javascript
复制
Person = function() {
  this.name = 'mike';
  this.departureSaying = 'Adios amigo!';
}

Person.prototype.say = function() {
  var self = this;
  function hello() { alert('hello my name is ' + self.name); }
  function goodbye() { alert(self.departureSaying); }
}

var mike = new Person();
mike.say.hello();
mike.say.goodbye();

如果你运行这个命令,你会得到Object has no method hello和Object。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-01 08:48:18

您的两个函数是该方法的本地函数;您不会返回它们。

代码语言:javascript
复制
Person.prototype.say = function() {
    var self = this;

    return {
        hello: function() { alert('hello my name is ' + self.name); },
        goodbye: function() { alert(self.departureSaying); }
    };
};

然后你会想要:

代码语言:javascript
复制
mike.say().hello();
mike.say().goodbye();

然而,我不认为在这种情况下使用原型是正确的。在构造函数中指定它,而不是:

代码语言:javascript
复制
function Person() {
    var self = this;

    this.name = 'mike';
    this.departureSaying = 'Adios amigo!';

    this.say = {
        hello: function() { alert('hello my name is ' + self.name); },
        goodbye: function() { alert(self.departureSaying); }
    };
}

Here's a demo.

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

https://stackoverflow.com/questions/11278774

复制
相关文章

相似问题

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