gpt4 book ai didi

javascript - 如何定义扩展方法并将其作为实例和静态方法调用?

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

是的,我知道我使用的术语根本不适用于 OOP 语言。

当我在 C# 中定义扩展方法时,我可以将其调用为实例方法 foo.call(bar)Foo.call(foo,bar)。我为 Array equals(secondArray,comparer) 定义了一个“扩展”方法,用于检查元素的相等性。我现在将其称为 myArray1.equals(myArray2)

但是我也想将其称为 Array.equals(myArray1,myArray2)

如何使其成为可能的 JS 方式?

最佳答案

用一个例子来详细说明 SLAks 的答案:您可以提供一个“静态”方法,然后提供一个将实例显式传递给静态方法的实例方法。

var Obj = function(){
var _this = this;
this.x = 5;
this.equals = function(other){
return Obj.equals(_this, other);
}
}
Obj.equals = function(obj1, obj2){
return obj1.x == obj2.x;
}

obj1 = new Obj();
obj2 = new Obj();
console.log(obj1.equals(obj2));
console.log(Obj.equals(obj1, obj2));

控制台输出:

true
true

关于javascript - 如何定义扩展方法并将其作为实例和静态方法调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27388007/

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