javascript - 如何继承这个javascript函数

标签 javascript

我正在尝试更好地理解 javascript 中的继承。我的目标是编写一个声明一些变量并设置环境的函数,以便其他函数可以基于它构建。我有点像 Ruby 中的 mixins 一样思考。这是一个不起作用的简单示例。

function baseFunction(){

  this.my_var = "hello world";

};

function speakMessage(){

  alert(this.my_var);

}

speakMessage.prototype = baseFunction();

speakmessage();

我认为如果我将原型(prototype)设置为 baseFunction,那么将在 baseFunction 中搜索 speakMessage 函数中未找到的任何属性。那不对吗?我如何才能让它发挥作用?

最佳答案

简单的答案,但是... speakMessage();(大 M):-)

Javascript 区分大小写。

我错过了来自 HMR 的精彩评论:如果在 Javascript 中与 new 一起使用,函数就像构造函数一样。请注意我添加到您的代码中的两个 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 的回答。

关于javascript - 如何继承这个javascript函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20910824/

相关文章:

javascript - 如何修复 jQuery 中的重复回调

javascript - 如何在忽略括号中的部分的同时拆分字符串?

javascript - document.getElementById 破坏了代码

javascript - AngularJS 与 jQuery DataTables 间歇性工作

javascript - express.js 中的路由器基于参数

javascript - 在 php 页面上如何使用 mysql 在第 n 行之后插入行

javascript - 我们可以在警告框中放一个复选框吗?

javascript - 警告 - 动态加载 csv 时的严重依赖关系

javascript - ThreeJS纹理加载: black for a while on Firefox

javascript - 如何在 JavaScript 中获取当前 URL 的目录部分?