简体   繁体   English

Mocking window.navigator object

[英]Mocking window.navigator object

var fake_navigator = {}
  for (var i in navigator) {
      fake_navigator[i] = navigator[i]
  }
  window.fake_navigator = fake_navigator

This creates a fake navigator object, however when I press "window.navigator" and "window.fake_navigator" the only difference is the way it is printed.这会创建一个假导航器 object,但是当我按下“window.navigator”和“window.fake_navigator”时,唯一的区别是它的打印方式。

在此处输入图像描述

There is a string "Navigator" infront, how can I replicate the same exact thing?前面有一个字符串“Navigator”,我怎样才能复制同样的东西?

You can't add a name by just using an object literal, but you can if you make a class.您不能仅使用 object 文字来添加名称,但如果您创建 class 则可以。 Chrome (and most other browsers) will automatically add the class name before the object name when you're using an object that is an instance of that class.当您使用 object 时,Chrome(和大多数其他浏览器)将在 object 名称之前自动添加 class 名称,它是 object 的一个实例,它是 object 的一个实例。 By making a class called FakeNavigator , you'll be able to see the class name as a prefix (run in browser console):通过制作名为 FakeNavigator 的FakeNavigator ,您将能够看到 class 名称作为前缀(在浏览器控制台中运行):

class FakeNavigator {
  constructor() {
    for (const i in navigator) {
      this[i] = navigator[i]
    }
  }
}

window.fake_navigator = new FakeNavigator();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM