我试图更好地理解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的答案。