gpt4 book ai didi

原型(prototype) getter 访问的 Javascript 私有(private)属性

转载 作者:行者123 更新时间:2023-11-30 17:42:46 25 4
gpt4 key购买 nike

我最近学习了更多关于嵌套函数的知识,并发现我通过在构造函数中定义方法来编写低效代码:this.method=function(){} 并阅读它会使用起来更高效:constructor.prototype.method=function(){}。但是,在我将“私有(private)”属性编写为局部变量并在构造函数中定义 getter 之前:

function class(prop)
{
var prop2=prop*2;
this.__defineGetter__('prop2',function() {return prop2;});
}

但我很快意识到删除构造函数中的第二行并使用 class.prototype.__defineGetter__('prop2',function() {return prop2;});返回一个空字符串

有没有办法解决这个问题?还是一种更好的方法来使对象中的属性只能通过抽象访问?

最佳答案

JavaScript 中的私有(private)属性依赖闭包机制在定义函数/getter 时保留词法范围(或者,简单地说,可用变量)。换句话说,不,如果您希望属性保持私有(private),则不能在构造函数之外执行此操作。尝试在其他任何地方执行此操作要么会“泄漏”访问权限,要么不会成为 prototype 的一部分。

您的示例之所以有效,是因为 getter 关闭了(因此保留了对 prop2 的访问权限),即使在构造函数返回之后也是如此。

关于原型(prototype) getter 访问的 Javascript 私有(private)属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20727715/

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