gpt4 book ai didi

javascript - 在方法中调用全局函数?

转载 作者:行者123 更新时间:2023-11-30 17:04:31 25 4
gpt4 key购买 nike

我做了一些腿部工作,让这段代码在达到某个特定点时按照我希望的方式运行。但是,我遇到了需要一些指导才能帮助我解决问题的问题。

要解决的问题
代码中的注释将解释我要归档的内容..

var myArr = ["Brent white","brentw.white"];

function nameFoo (name){
var strSplit = name.split(" "); // splitting Brent White
var nameStr = this. myArr; // fetching Brent white string from myArr
console.log (strSplit,myArr[0]);
}

nameFoo("Brent White"); // calling nameFoo function

var myData = {
someData:"somedata",
someMoreData:"moredata",
myName:function(){
// I need to call nameFoo function through myName method.
// My hypothesis is that return will use the (this) keyword within the object?
}
};

// Here I need to call the method to have access my nameFoo? Correct me if I am wrong?
// Is this method invocation?
// Please help..Lost here...

总而言之,我希望myName 方法调用nameFoo 函数。 nameFoo 然后会给我 myName 方法结果。

如果有人能很好地演示如何完成这最后一步,我将不胜感激。

指出我正确的方向也将不胜感激..PS 我是 JS 的新手。

最佳答案

小心使用“this”关键字。通过在全局上下文中调用 nameFoo 即:

// some code 
nameFoo(arg);
// some more code

“this”将始终指代“window”。所以,当你调用 myData.myName 时,即使这个对象调用了 nameFoo 方法,'window' 仍然会在 nameFoo 的 'this' 中被引用。 “this”通常限定为函数所属的对象。

如果您需要“this”来引用您的自定义对象之一,请在您的 myName 函数中使用函数原型(prototype)方法“call”。

var myData = {
...
...
myName: function() {
nameFoo.call(this, someArgument);
};

请注意,someArgument 将是传递给“nameFoo”的参数——如果您不提供参数,它将引发错误。由您决定要传递什么。

关于 Function.prototype.call 的更多信息: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call

关于 Function.prototype.apply 的更多信息: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/apply

两者之间唯一真正的区别是您如何为正在调用的函数提供参数。使用“call”,您可以用逗号分隔参数(就像您在正常执行函数时所做的那样)。

例如:nameFoo.apply(this, arg1, arg2, arg3);

使用“apply”,您可以将参数作为数组提供。

例如:nameFoo.apply(this, [arg1, arg2, arg3]);

关于javascript - 在方法中调用全局函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28269228/

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