gpt4 book ai didi

javascript - 您使用什么样式创建 "class"?

转载 作者:行者123 更新时间:2023-12-03 12:46:15 27 4
gpt4 key购买 nike

有几种方法可以在 javascript 中获得类类行为,最常见的似乎是基于原型(prototype)的,如下所示:

function Vector(x, y, x) {
this.x = x;
this.y = y;
this.z = z;
return this;
}

Vector.prototype.length = function () { return Math.sqrt(this.x * this.x ... ); }

和基于闭包的方法类似于
function Vector(x, y, z) {
this.length = function() { return Math.sqrt(x * x + ...); }
}

由于各种原因,后者更快,但我已经看到(并且我经常编写)原型(prototype)版本并且很好奇其他人在做什么。

最佳答案

将函数分配给原型(prototype)更好(对于公共(public)方法),因为类的所有实例都将共享该方法的相同副本。如果像第二个示例那样在构造函数中分配函数,则每次创建新实例时,构造函数都会创建长度函数的新副本并将其分配给该实例。

但是,如果您希望每个副本都有自己的副本,则后一种技术很有用,该技术的主要用途是执行私有(private)/特权方法,这些方法可以访问在构造函数中声明并通过闭包机制继承的私有(private)变量。

道格拉斯·克罗克福德有一个很好的summary .

关于javascript - 您使用什么样式创建 "class"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6499/

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