我正在寻找一种安全的方法,使现有的函数成为instanceof
另一个函数。
我在此处读到IE8不支持__proto__
:https://stackoverflow.com/a/12431941/665261
我读到淘汰赛js支持IE8:http://knockoutjs.com/documentation/browser-support.html
我使用__proto__
找到了淘汰赛:https://github.com/knockout/knockout/blob/241c26ca82e6e4b3eaee39e3dc0a92f85bc1df0c/src/utils.js#L21
淘汰怎么能使用__proto__
然后在IE8上运行?
答案 0 :(得分:1)
淘汰怎么能使用
__proto__
然后在IE8上运行?
因为它检测到正在运行的浏览器是否支持__proto__
,并且仅在支持它时才使用它。
在您链接的链接之后只需几行即可找到:
var canSetPrototype = ({ __proto__: [] } instanceof Array);
...在定义对象时进一步向下:
setPrototypeOfOrExtend: canSetPrototype ? setPrototypeOf : extend,
然后KO使用setPrototypeOfOrExtend
,具体取决于是否支持__proto__
。