gpt4 book ai didi

javascript - 将方法放在 Object.getPrototypeOf(this) 上

转载 作者:行者123 更新时间:2023-11-28 18:07:27 36 4
gpt4 key购买 nike

查看这个类的定义:

function MyClass (property) {
// Private
var privateVariable;
var privateMethod = function () {};

// Public
this.publicProperty = property;
this.publicPrivilegedMethodOnInstance = function () {};
Object.getPrototypeOf(this).publicPrivilegedMethodOnPrototype = function () {};
}
MyClass.prototype.publicMethod = function () {};

var myMyClass = new MyClass('foo');

方法publicPrivilegedMethodOnPrototype是公共(public)的,但可以访问私有(private)变量(publicMethod)不能。它也在原型(prototype)上共享,而 publicPrivilegedMethodOnInstance 则不然。

像这样定义publicPrivilegedMethodOnPrototype有什么缺点吗?我猜想 ECMAScript 5 是一个要求,并且每次实例化 MyClass 时都会重新定义该方法。

最佳答案

这是一个非常糟糕的主意。

因此,您创建了许多对象,但当您将属性分配给所有对象的原型(prototype)时,在某些时候,甚至不打算访问某些值的函数也会这样做... 这非常好奇数

给定的原型(prototype)函数旨在使用 this 访问拥有原型(prototype)的对象的属性:

function X() {
this.text = "hello world";
}
X.prototype.doStuff() {
console.log(this.text);
};

因此,请避免这种反模式。这个不成立。我的建议是,您需要解决 JavaScript 中缺少访问修饰符的问题,而不是盲目寻找解决方法。

关于javascript - 将方法放在 Object.getPrototypeOf(this) 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42320902/

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