javascript - 创建新的 Response() 时如何设置“url”?
问题描述
我正在按照这个示例为测试创建一个模拟响应。
稍作修改,它看起来像这样:
var data = { foo: 'bar'};
var blob = new Blob([JSON.stringify(data)], {type : 'application/json'});
var init = { "status" : 200 , "statusText" : "SuperSmashingGreat!" };
var resp = new Response(blob,init);
console.log(resp.url)
body: (...)
bodyUsed: true
headers: Headers {}
ok: true
redirected: false
status: 200
statusText: "SuperSmashingGreat!"
type: "default"
url: ""
这很好地模拟了数据和状态但是,我也想模拟resp.url
我不知道如何使用构造函数设置它并且[因为它是只读的]我不能在 resp 本身上设置它
resp.url
>> ""
resp.url = 'www.test.com'
>> "www.test.com"
resp.url
>> ""
那么如何设置网址呢?
解决方案
由于url
实际上是由继承的 getter 定义的,因此您可以使用Object.definedProperty
直接在您的Response
实例上定义一个简单的 value 属性,它会隐藏继承的 getter 属性:
Object.defineProperty(resp, "url", { value: "foobar" });
为了您自己的理解,您可以通过查看以下属性描述符来查看继承的 getter Response.prototype.url
:
Object.getOwnPropertyDescriptor(Object.getPrototypeOf(new Response()), 'url')
> {get: ƒ, set: undefined, enumerable: true, configurable: true}
推荐阅读
- ios - 在不显示嵌套/中间视图控制器的情况下关闭根视图控制器
- javascript - 有没有办法在 iframe 元素中放置链接?
- python-3.x - keras 中的 RNN 层
- r - 过滤以间隔中的数字开头的观察?
- sql - 使用 AWS athena 的时间戳差异
- stm32 - stm32fx、RTX 和外部中断
- javascript - 无法在“元素”上执行“setAttribute”:“roman”;“”不是有效的属性名称
- c++ - 如何将键盘输入发送到Windows98窗口模式下运行的dos应用程序
- java - 无法使用容器将消息放入 ibm mq
- c# - 从共享文件夹中检索 siteId 和 listId