我遇到了 require.js 和原型继承的问题。这是我的模块:
define([], (function() {
"use strict";
var Player = function() {
console.log("Constructor of the Player Object");
this.audioObject = new Audio();
};
Player.prototype = new Audio();
return Player;
})); // define
然后我尝试以这种方式使用音频对象的播放方法:
define(["jquery", "player"], (function($, Player) {
"use strict";
/**
* The controls for the player
**/
var Controls = function(player) {
$(".play").click(function() {
console.log("play");
player.play();
});
};
return Controls;
})); // define
单击按钮时,Chrome 会抛出 Error: Uncaught TypeError: Illegal invocation
我已经尝试了几个小时,在这里阅读了类似的问题,但其中大多数与 jQuery 有关,我认为这不是问题所在。(我尝试自己定义一个名为 Player.prototype.play() 的方法,效果很好,但我认为这不是重写所有方法的最佳方法)