我试图更好地理解javascript中的继承。我的目标是编写一个声明一些变量并设置环境的函数,以便其他函数可以以此为基础。我有点想像Ruby中的mixin。这是一个不起作用的简单示例。

function baseFunction(){

  this.my_var = "hello world";

};

function speakMessage(){

  alert(this.my_var);

}

speakMessage.prototype = baseFunction();

speakmessage();

我以为,如果我将原型(prototype)设置为baseFunction,那么将在baseFunction中搜索在talkMessage函数中找不到的任何属性。那不对吗?我如何才能使它正常工作?

最佳答案

答案不重要,但是... speakMessage();(大M):-)

Javascript区分大小写。

我错过了HMR的精彩评论:如果在Javascript中与和新的一起使用,函数的作用就像构造函数。请注意我添加到您的代码中的两个new:

my_var = "goodbye world";

function baseFunction() {
  this.my_var = "hello world";
}

function speakMessage() {
  alert(this.my_var);
}

speakMessage.prototype = new baseFunction(); // new: inherit from object
new speakMessage(); // object constructor: hello world
speakMessage(); // function: goodbye world from window object context

也可以看看HMR的答案。

10-08 19:15