- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
A disadvantage of this pattern is that if a private function refers to a public function, that public function can't be overridden if a patch is necessary. This is because the private function will continue to refer to the private implementation and the pattern doesn't apply to public members, only to functions.
有没有人举例说明他的意思?
最佳答案
将使用对象字面量创建的对象与通过揭示模块模式创建的对象进行比较。
这是作为对象字面量创建的。
function makeGreeter(name){
return {
getName: function(){ return name;},
sayHello: function(){console.log("Hello, " + this.getName());}
}
}
var greeter = makeGreeter("Danny");
greeter.sayHello; // "Hello, Danny"
greeter.getName = function(){ return "George";}
greeter.sayHello(); // "Hello, George"
当您在返回的对象上覆盖公共(public)方法 getName
时,依赖于 getName
的 sayHello
方法会获取更改。这是因为在对象文字样式中,对公共(public)函数的引用是通过返回的对象 this
进行的。
但是,当您使用揭示模块模式时,
function makeGreeter(name){
var getName = function(){ return name;},
sayHello = function(){console.log("Hello, " + getName());};
return {
getName: getName,
sayHello: sayHello
}
}
var greeter = makeGreeter("Danny");
greeter.sayHello; // "Hello, Danny"
greeter.getName = function(){ return "George";}
greeter.sayHello(); // "Hello, Danny"
RMP greeter 不会选择对公共(public) getName
方法的覆盖。这是因为当 RMP 函数引用其他函数(公共(public)和私有(private)函数)时,它们引用私有(private)闭包副本而不是附加到返回对象的公共(public)函数。
正是出于这个原因,我将 Revealing Module Pattern 视为一种反模式。
关于javascript - "public function can' t be overridden if a patch is necessary 是什么意思 ."in Addy' 揭示模块模式的描述?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21925720/
我一直在尝试使用 ADDIS 和 ADDI 指令来实现将常量求和到数组的基本函数,我按照 https://cr.yp.to/2005-590/powerpc-cwg.pdf 第 48 和 49 页中的
我一直在尝试使用 ADDIS 和 ADDI 指令来实现将常量求和到数组的基本函数,我按照 https://cr.yp.to/2005-590/powerpc-cwg.pdf 第 48 和 49 页中的
我正在阅读 Addy Osmani 的精彩杂志 memory efficient JS 的博客在关闭部分。我了解以下函数引用了largeStr,并且GC无法声明它。 var a = function
我目前正在实现 RV32I 基本指令集。 我有一个关于 ADDI 指令的问题。在手册中,如何理解“ADDI rd, rs1, 0 用于实现MV rd, rs1 汇编器伪指令”这一条款。 这是否意味着
给定这段代码: // Constructor. var Interface = function (name, methods) { if (arguments.length != 2
我正在研究使用过程的MIPS代码,但无法理解堆栈(sp)和帧指针(fp)的目的。 例如,我研究的代码如下。它会在您输入的号码之前打印所有号码,例如3. 3,2,1,0,并显示它使用了多少堆栈大小。在此
我正在使用 Addy Osmani 的 pub sub 方法: var topics = {}; jQuery.Topic = function( id ) { var callbacks,
我应该回答这个问题。经过一番研究后发现,add 和 sub 具有相同的操作码,仅在功能领域有所不同。这是答案还是其他什么? 更新 它可以在 Nios II CPU 手册中找到: subi subtra
我使用由 Yeoman 生成的 MEAN 堆栈创建了一个应用程序 angular-fullstack 我很乐意包括 uncss到我的 grunt 构建。 不幸的是,鉴于该站点是 SPA,这是不可能的。
我正在学习如何为 RISC-V 处理器编写代码。我想将 0xFFFFFFFF 的值存储到内存/寄存器中。 我可以通过在 addi 指令之前添加 lui 来扩展它的 12 个立即位,像这样的东西: lu
LUI (load upper immediate) is used to build 32-bit constants and uses the U-type format. LUI places
我正在做作业,我需要记下 5 条指令的控制信号值,并试图先找出样本(代码在底部)。我需要做的 5 条指令是 Address Code Basic S
A disadvantage of this pattern is that if a private function refers to a public function, that publi
我的教授将此作为家庭作业问题的答案之一发布。谁能帮我解决这个问题吗?我不明白他对 CON1 - CON4 做了什么以及 >> 和 0x0FFF 是什么意思。 CON1: EQU 6000 CON2
我是一名优秀的程序员,十分优秀!