我正在寻找一种安全的方法来使现有函数成为另一个函数的实例
。
我在这里读到 IE8 不支持 __proto__
:https://stackoverflow.com/a/12431941/665261
我读到knockout js支持IE8:http://knockoutjs.com/documentation/browser-support.html
我使用__proto__
发现了 knockout :https://github.com/knockout/knockout/blob/241c26ca82e6e4b3eaee39e3dc0a92f85bc1df0c/src/utils.js#L21
knockout 使用 __proto__
却可以在 IE8 上运行,这怎么可能?
最佳答案
How can it be that knockout uses
__proto__
and yet works on IE8?
因为它会检测其运行的浏览器是否支持 __proto__
,并且仅在支持时才使用它。
在您链接到的行之后,您会发现:
var canSetPrototype = ({ __proto__: [] } instanceof Array);
...定义对象时进一步向下:
setPrototypeOfOrExtend: canSetPrototype ? setPrototypeOf : extend,
然后 KO 根据是否支持 __proto__
来使用 setPrototypeOfOrExtend
。
关于javascript - IE8 中的 __proto__ 使用 ko,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37829462/