如何在javascript对象构造函数中调用self原型函数

时间:2016-02-23 19:12:43

标签: javascript

为什么我的人在调用一个自我方法时不会说“你好”?如何解决这个问题?

var Person = (function () {

  function Person() {
    this.prototype.say();
  }

  Person.prototype.say = function() {
    alert("hello");
  }

  return Person;
})();

var person = new Person();

2 个答案:

答案 0 :(得分:4)

要调用current对象上的函数,您不应使用prototype,只需将其调用(this.say())。

var Person = (function() {
    function Person() {
        this.say();
    }

    Person.prototype.say = function() {
      alert("hello");
    }
    return Person;
})();

var person = new Person();

要在javascript中了解有关OOP的更多信息,您可以阅读MDN

上的文档

关于inheritanceprototype chain

MDN上的好文档和示例

来自@FelixKling的好消息

  

对象this指的是没有prototype属性。只有函数具有原型属性。

答案 1 :(得分:1)

isvforall的解决方案很好。

关键是'prototype'定义了你在Person()构造函数中“构造”的对象可用的函数 - 称为'this。'。

原型是使用Person()构造的所有对象的共享基础定义。在Person()构造函数和其他原型方法中,实例本身用'this'引用。

请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Inheritance_and_the_prototype_chain等文档以供参考。