在工作中讨论之后,我仍然没有对以下内容有满意的答案,在其他编程语言中我们都没有谈到特权函数.
var kid = function(name)
{
// Private
var idol = "Paris Hilton";
// Privileged
this.get_idol = function()
{
return idol;
};
}
Run Code Online (Sandbox Code Playgroud)
我能想到的唯一逻辑是,如果你让一个公共函数返回一个私有变量,那么这个函数是"特权"来执行此操作(因为你不能直接调用它).
我们可以在php中做同样的事情,但我们不使用这个花哨的名字,也不能使用这个术语回忆任何其他语言.
你甚至可能会发现,如果你需要一个"特权"功能,你的整个方法都是错误的,因为如果你需要它可以从外部访问,为什么不直接公开它.
另一方面,私有变量不能从外部改变,因此它将受到保护.但显示在外面.
最后,作为普通javascript的一个新手,这个词有点令人困惑,imho只是一个奇特的名字,使它更混乱,因为然后在PHP它也会变得像javascript:
class kid
{
// Private
private idol = "Paris Hilton";
// PUBLIC OR PRIVILEGED ?
public function get_idol()
{
echo $this->idol;
}
}
Run Code Online (Sandbox Code Playgroud)
它做的相同,但只是一个公共方法.
Jul*_*lia 12
Javascript没有特权或任何功能.所有它的功能都是闭包,那就是那里使用的东西,C#也得到了这个和大多数功能语言.
如果需要,可以使用该语言的ECMA规范,特权字不会出现在其中.
这个术语似乎来自http://www.crockford.com/javascript/private.html,但它只是将闭包概念简化为针对其使用目标的特定情况,我猜对于OOP程序员类型.
Javascript可以比大多数OOP语言更强大的设计,但你需要以开放的心态和理解功能概念来处理它.试图强迫它成为另一种OOP语言既是一个坏主意,也是一个耻辱.
是的,该模式用于模拟私有属性和访问它们的公共方法.
JavaScript实际上没有对象的公共/私有属性/函数.私有属性是构造函数中的局部变量,可以由子函数访问(javascript术语中的"闭包").然后将对子函数的引用添加为对象的属性.
我不认为通常使用"特权功能"这个术语.我只在"面向OOP人的JavaScript"教程中看到过它.
| 归档时间: |
|
| 查看次数: |
3782 次 |
| 最近记录: |