我想要的是将同一对象的多个部分传递给该对象的函数 我正在尝试的是制作一个自定义的矢量数学助手。
我正在寻找的是像
function dotProduct(Vector3 a, Vector3 b){
//do calculations here
return Vector3 a.b;
}
但我似乎无法找到任何帮助。 有什么想法吗?
答案 0 :(得分:3)
JavaScript没有类或类型提示。你可以这样做:
var Vector3 = function(x, y, z) {
this.x = x;
this.y = y;
this.z = z;
}
var dotProduct = function(a, b) {
// do something with a.x, a.y, a.z, b.x, b.y, b.z
return new Vector3(...);
}
要创建新的Vector3
,您可以使用new
关键字:
// x y z
var v1 = new Vector3(1, 2, 3);
var v2 = new Vector3(2, 3, 4);
var product = dotProduct(v1, v2);
您还可以在dotProduct()
个实例上添加Vector3
功能:
Vector3.prototype.dotProduct = function(b) {
// do something with this.x, this.y, this.z, b.x, b.y, b.z
return new Vector3(...);
}
在这种情况下,您可以将其称为:
var v1 = new Vector3(1, 2, 3);
var v2 = new Vector3(2, 3, 4);
var product = v1.dotProduct(v2);
为了明确您的意图,您可以在评论中添加类型提示:
/**
* @param Number x
* @param Number y
* @param Number z
* @constructor
*/
var Vector3 = function(x, y, z) {
this.x = x;
this.y = y;
this.z = z;
}
/**
* @param Vector3 b
* @return Vector3
*/
Vector3.prototype.dotProduct = function(b) {
// do something with this.x, this.y, this.z, b.x, b.y, b.z
return new Vector3(...);
}
大多数JavaScript IDE都知道这意味着什么,并且当你没有将Vector3
作为参数传递时会发出警告来帮助你。