复制不带属性的函数引用
Copy a function reference without its properties
这听起来可能很奇怪,但我想复制一个忽略其成员的函数引用
举个例子:
var a, b;
a = function(){ return "foo" };
a.x = "bar";
b = /* some magic here */;
a(); // foo
a.x; // bar
b(); // foo
b.x; // undefined
因此,调用a()
和b()
必须返回"foo",因为它们是同一个函数
调用a.x
和b.x
必须返回不同的结果,因为b
没有复制a
属性。
有办法这样做吗?
编辑:为了清楚起见,我知道我可以引用整个函数对象,如下所示:
a = function(){ return "foo" };
a.x = "bar";
b = a;
b(); // foo
b.x; // bar
但是,b.x
是定义的,等于"bar"
,这不是我想要的。
根据您的评论:
在这种情况下,您将永远无法拥有a == b
。对象相等要求两个变量都包含对精确对象的引用,因此除非设置a = b
/b = a
,否则它将始终返回false
您可以使用原型创建继承同一函数的独立a
和b
实例。实例也可以有自己的非共享属性。例如:
var a, b;
function zot() {};
zot.prototype.f = function(){ return "foo" };
a = new zot();
a.x = "bar";
b = new zot();
a.f(); // foo
a.x; // bar
b.f(); // foo
b.x; // undefined
相关文章:
- 如何在JavaScript中将字符串转换为函数引用
- IIFE中的函数引用不可用
- Wordpress中的Javascript出现匿名函数/引用错误
- 将函数引用存储在散列中在javascript中无法正常工作
- Google可视化addListener调用函数引用错误
- 如何存储包含参数的JS函数引用
- 如何从函数引用元素(从事件侦听器调用)
- 将函数引用传递给嵌套闭包
- Javascript递归函数引用了这一点
- 在Node.js中,从同一文件中的另一个函数引用一个函数会导致'ReferenceError:-函数-未定义
- 为什么将函数引用封装到匿名函数中可以更正'这'指向
- 如何在ES6中使用Arrow函数引用对象内部的其他函数
- 复制不带属性的函数引用
- 在控制器中使用具有函数引用的服务
- Jquery 和闭包或函数引用不起作用
- 将函数引用传递给函数失败
- Jasmine spyOn:当传递间谍函数引用时如何使其工作
- 从 Javascript 中的嵌套函数引用对象成员
- Typescript-不同文件中的模块函数引用-“;找不到符号“;
- 与许多事件侦听器和函数引用一个对象相比,什么是更好的方法