gpt4 book ai didi

javascript - Browserify/JavaScript,otherjs.myfunction 不是 function()

转载 作者:行者123 更新时间:2023-12-03 08:39:57 27 4
gpt4 key购买 nike

我正在尝试用 JS 制作一些东西,并使用 browserify 在我的主代码中使用其他 JS 文件。我知道我已经正确安装了node和browserify,因为我可以在终端中输入“browserify example.js -o bundle.js”并运行他的代码就可以了。

我最终只是将我的函数 (soundoff()) 添加到他下面的 system.js 代码中,并尝试以与他在第二个代码片段中调用此文件中的函数相同的方式调用它...

    module.exports = (function (){
var _final = "",
DEFAULT_STEP = 15,
DEFAULT_TURN = Math.PI / 4;



/* Initializes an L-System using the supplied
* axiom, rules, and number of iterations
* params:
* - axiom: the starting string
* - rules: the array of rules as string -> string
* key/value pairs (i.e. ["key", "value"]
* - iterations: the number of iterations to carry out
*/
function lsystem(axiom, rules, iterations) {
_final = axiom;

for(var i = 0; i < iterations; i++) {
_final = apply(_final, rules);
}

return _final;
}

function soundoff(done) {
return done;
}

您可以在下面看到,我调用它的方式与他从 ls 引用/函数/模块调用其他函数的方式相同,但我仍然得到“未捕获的类型错误:ls.soundoff 不是函数”

window.onload = function() {
var ls = require('./lsystem.js');

var wonk = ls.soundoff("wonk!");

// Set up the algae demo
var aIter = document.getElementById("algae-iterations"),
aOut = document.getElementById("algae-output");
aOut.value = ls.algae(0);
aIter.onchange = function() {
aOut.value = ls.algae(aIter.value);
}

无需调用此函数即可完美运行。这些不是完整的代码文件,但我知道其他一切都很好,因为它们可以工作,我只是不明白为什么我不能像这样放入一个函数并调用它......

预先感谢您的帮助! :)

最佳答案

那是行不通的。因为 soundoff 是 lsystem 函数中的一个函数,这意味着 soundoff 不能作为属性访问。

如果您可以更改 lsystem 以导出对象并执行此操作,那么它将起作用。

module.exports = {

soundoff : function(done){
return done;
}
}

编辑:

方法一:

file1.js

module.exports = (function func(){

return {

soundoff : function(done){
return done;
}
}
});

file2.js

var func = require('file1');
var obj = func();
obj.soundoff('wonk');

方法2。

file1.js

module.exports = {

soundoff : function(done){
return done;
}
}

file2.js

var obj = require('file1');
obj.soundoff('wonk');

方法:3

还有其他肮脏的方法,您可以将 this 属性与 Function.prototype.call 结合使用,但我建议您不要这样做。永远不要使用它。高度不稳定。

file1.js

module.exports = (function func(){

this.soundoff = function(done){
return done;

}

});

file2.js

var func = require('file1');
func.call(func);
func.soundoff('wonk');

关于javascript - Browserify/JavaScript,otherjs.myfunction 不是 function(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33072948/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com