当前位置:  开发笔记 > 编程语言 > 正文

如何使用任意原型创建可调用的JS对象?

如何解决《如何使用任意原型创建可调用的JS对象?》经验,为你挑选了1个好方法。



1> olliej..:

没有什么可以阻止你向函数添加任意属性,例如.

function bar(o) {
    var f = function() { return "Hello World!"; }
    o.__proto__ = f.__proto__;
    f.__proto__ = o;
    return f;
}

var o = { x: 5 };
var foo = bar(o);
assert(foo() === "Hello World!");
delete foo.x;
assert(foo.x === 5);

我相信应该做你想做的事.

这可以通过将对象o注入原型链来实现,但有几点需要注意:

我不知道IE是否支持__proto__,甚至有一个等效的,一些评论,这看起来只适用于基于firefox和safari的浏览器(因此camino,chrome等工作).

o.__proto__ = f.__proto__;只是函数原型函数(如function.toString)才真正需要,所以你可能只想跳过它,特别是如果你希望o有一个有意义的原型.

推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有