Ray*_*nos 8 javascript design-patterns object public-method
我想拿一个对象并从中删除一些方法.
即我内部有一个带有getter/setter的对象,我想让外部用户访问它.我不希望他们有权访问setter函数.
我不想通过从中删除方法来更改原始对象引用,但是创建一个新的对象引用,该引用指向同一个对象但其上的方法较少.
我有这个功能的实现
var readOnly = function(obj, publicData) {
// create a new object so that obj isn't effected
var object = new obj.constructor;
// remove all its public keys
_.each(object, function(val, key) {
delete object[key];
});
// bind all references to obj
_.bindAll(obj);
// for each public method give access to it
_.each(publicData, function(val) {
object[val] = obj[val];
});
return object;
};
Run Code Online (Sandbox Code Playgroud)
出于所有预期目的,返回的对象应该与原始对象相同,除了一些方法不再存在.内部this引用不应该在任何函数中中断.原型链不应该破裂.