gpt4 book ai didi

javascript - 为什么要制作非特权方法?

转载 作者:数据小太阳 更新时间:2023-10-29 05:43:03 26 4
gpt4 key购买 nike

我正在学习 JavaScript,但我不明白为什么您要创建非“特权”方法,也就是说,这些方法不是在构造函数中定义的,而是在类的原型(prototype)中定义的。

我理解封装和所有的概念,但是在大多数 OO 世界中,您永远不会将类的其余部分封装起来。

最佳答案

当在构造函数中定义函数时,每次调用构造函数时都会创建该函数的新实例。它还可以访问私有(private)变量。

var myClass = function() {
// private variable
var mySecret = Math.random();

// public member
this.name = "Fred";

// privileged function (created each time)
this.sayHello = function() {
return 'Hello my name is ' + this.name;
// function also has access to mySecret variable
};
}

当在原型(prototype)上定义一个函数时,该函数只会创建一次,并且会共享该函数的单个实例。

var myClass = function() {
// private variable
var mySecret = Math.random();

// public member
this.name = "Fred";
}

// public function (created once)
myClass.prototype.sayHello = function() {
return 'Hello my name is ' + this.name;
// function has NO access to mySecret variable
};

因此,在原型(prototype)上定义一个函数会产生更少的对象,从而为您提供更好的性能。另一方面,公共(public)方法无法访问私有(private)变量。更多示例和推理可在此处获得:http://www.crockford.com/javascript/private.html

关于javascript - 为什么要制作非特权方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3066688/

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