如何在没有原型设计的情况下调用另一个函数的方法

时间:2017-03-26 16:00:24

标签: javascript

这肯定是微不足道的问题,但我对JavaScript很困惑。我想在另一个函数中调用方法。我花了一些时间来处理这个问题,到目前为止我所做的只是第二段代码。我想知道,如果评论中有任何类似的解决方案。

function Student() {
  this.greeting = function() {
    alert('Hi! I\'m student.');
  };
};

function Teacher() {
  Student.call(this)
  this.greeting = function() {
    Student.???  // here I want something like "inherited", or call  Student.greeting()
    alert('and I like apples');
  };
};

我想确定,没有像原型制作那样的选择:

function Student() {

};

Student.prototype.greeting = function() {
    alert('Hi! I\'m student.');
  };

function Teacher() {
  Student.call(this);
  this.greeting = function() {
    Student.prototype.greeting();
        alert('and I like apples');
  };
};

感谢名单

1 个答案:

答案 0 :(得分:-1)

学生是一个函数,在你的情况下它也是一个构造函数。 致电"学生"你需要保存通过构造函数学生

调用返回的对象
function Teacher() {
  var stdnt = new Student()
  this.greeting = function() {
    stdnt.greeting()
    alert('and I like apples');
  };
};

另外,在你的代码中,Student.call(this)相当于函数调用Student() - 没有创建新对象

UPD2。这个来自内部函数的stdnt调用称为" closure"