gpt4 book ai didi

javascript - javascript 中的方法指针/引用

转载 作者:行者123 更新时间:2023-11-29 19:46:04 24 4
gpt4 key购买 nike

这是我当前代码的示例:

var myObject = new Obj();

if(something)
myObject.method1(arg1, arg2);
else
myObject.method2(arg1, arg2);

以及我如何声明我的对象:

function Obj() { }

Obj.prototype.method1 = function(a, b) { }
Obj.prototype.method2 = function(a, b) { }

因为我做了很多次这种测试,所以我想知道是否可以做这样的事情:

if(something)
var method = method1;
else
var method = method2;

myObject.method(arg1, arg2);

最佳答案

是的,函数是 JavaScript 中的一流对象,因此您可以将函数引用存储在变量中,然后通过变量调用函数。在您的情况下,您需要以特殊方式执行此操作以确保 this 在调用中是 myObject:

var method;
if(something)
method = myObject.method1;
else
method = myObject.method2;

method.call(myObject, arg1, arg2);

请注意最后使用 call:这允许您调用函数并控制函数调用中的 this

如果条件真的那么短,你可以这样做:

var method = something ? myObject.method1 : myObject.method2;
method.call(myObject, arg1, arg2);

甚至:

var method = something ? "method1" : "method2";
myObject[method](arg1, arg2);

更多探索:

关于javascript - javascript 中的方法指针/引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19609006/

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