AABB
AlignmentBehavior
ArriveBehavior
AStar
BFS
BoundingSphere
BVH
BVHNode
Cell
CellSpacePartitioning
CohesionBehavior
CompositeGoal
ConvexHull
Corridor
CostTable
DFS
Dijkstra
Edge
EntityManager
EvadeBehavior
EventDispatcher
Behavior
FollowPathBehavior
FuzzyAND
FuzzyCompositeTerm
FuzzyFAIRLY
FuzzyModule
FuzzyOR
FuzzyRule
FuzzySet
FuzzyTerm
FuzzyVariable
FuzzyVERY
GameEntity
Goal
GoalEvaluator
Graph
GraphUtils
HalfEdge
HeuristicPolicyDijkstra
HeuristicPolicyEuclid
HeuristicPolicyEuclidSquared
HeuristicPolicyManhattan
InterposeBehavior
LeftSCurveFuzzySet
LeftShoulderFuzzySet
LineSegment
Logger
MathUtils
Matrix3
Matrix4
MemoryRecord
MemorySystem
MeshGeometry
MessageDispatcher
MovingEntity
NavEdge
NavMesh
NavMeshLoader
NavNode
Node
NormalDistFuzzySet
OBB
ObstacleAvoidanceBehavior
OffsetPursuitBehavior
OnPathBehavior
Path
Plane
Polygon
Polyhedron
PriorityQueue
PursuitBehavior
Quaternion
Ray
RectangleTriggerRegion
Regular
RightSCurveFuzzySet
RightShoulderFuzzySet
SAT
SeekBehavior
SeparationBehavior
SingletonFuzzySet
Smoother
SphericalTriggerRegion
State
StateMachine
SteeringBehavior
SteeringManager
Task
TaskQueue
Telegram
Think
Time
TriangularFuzzySet
Trigger
TriggerRegion
Vector3
Vehicle
Version
WanderBehavior

execute

execute 是 Think 框架中核心模块 Yuka.js 的一个方法,用于执行一个函数或表达式,并返回其结果。

语法

execute(fn: Function | string, context?: object, args?: any[]): any

参数

  • fn:一个需要执行的函数或表达式。
    • 如果传递的是一个字符串,则会当作表达式进行计算并返回结果。
    • 如果传递的是一个函数,则会调用该函数并返回其结果。
  • context:(可选)执行函数/表达式时的上下文对象。
  • args:(可选)执行函数/表达式时传递的参数。

返回值

执行函数/表达式的返回结果。

示例

例1:执行一个加法表达式

const result = execute('1 + 2 + 3 + 4');
console.log(result); // 10

例2:执行一个具有上下文的加法函数

function add(a, b) {
  return a + b + this.c; // 假设 context 对象中有一个属性 c
}

const context = {
  c: 5
};

const result = execute(add, context, [1, 2]);
console.log(result); // 8

注意事项

  • execute 方法在执行表达式时,会调用 eval 方法进行计算。因此,为了避免安全隐患,建议尽量避免使用表达式来执行一些敏感操作。
  • 如果传递的是一个函数,在执行时建议使用箭头函数或使用 bind 方法来指定上下文,以避免 this 的问题。