javascript - 扩展函数

标签 javascript jquery underscore.js

假设我有一个这样的函数:

function foo(){
    var myValue = 5;
    var myOtherValue = 1;
    return {
        getValue: function(){
            return [myValue, myOtherValue];
        }
    }
}

有没有一种方法可以在不触及原始函数的情况下以某种方式扩展/覆盖此函数,以便当我调用 getValue() 时我得到[我选择的其他值,myOtherValue]

如果没有,我可以在实例级别执行此操作吗?

var myFoo = new foo();
myFoo.getValue = function(){
    return [0, myOtherValue]; // how to I access myOtherValue?
}

最佳答案

如果你不想修改foo,可以这样做:

function foo(){
    var myValue = 5;
    var myOtherValue = 1;
    return {
        getValue: function(){
            return [myValue, myOtherValue];
        }
    }
}

var myFoo = new foo();
//move getValue to _getValue
myFoo._getValue = myFoo.getValue;

//do custom getValue
myFoo.getValue = function(){
    return [0, myFoo._getValue()[1]]; 
}

关于javascript - 扩展函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22053968/

相关文章:

javascript - 语法错误 : missing ; before statement in JSON

javascript - 为什么在加载 knockoutJs 时调用下拉列表的订阅事件?

javascript - Angular 返回未定义

jQuery 仅切换此元素

javascript - 使用下划线减少连接?

javascript - Underscore.js _.tap() 函数什么是方法链?

javascript - 在多个 HTML 元素上设置 CSS 属性

jQuery - 将类添加到下一个元素并在一段时间后将其从当前元素中删除

jquery - 使用ajax提交时弹出显示模式对话框

javascript - 将 _without 和 _findWhere 从下划线转换为 ES6