我正在按照此示例为测试创建模拟响应。
稍微修改一下,它看起来像这样:
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: ""
Run Code Online (Sandbox Code Playgroud)
这在模拟数据和状态方面做得很好,但是,我也想模拟resp.url我不知道如何使用构造函数来设置它,并且[因为它是只读的]我无法在 resp 本身上设置它
resp.url
>> ""
resp.url = 'www.test.com'
>> "www.test.com"
resp.url
>> ""
Run Code Online (Sandbox Code Playgroud)
那么如何设置url呢?
由于url实际上是由继承的 getter 定义的,因此您可以Object.definedProperty直接在实例上定义一个简单的 value 属性Response,这会隐藏继承的 getter 属性:
Object.defineProperty(resp, "url", { value: "foobar" });\nRun Code Online (Sandbox Code Playgroud)\n\n为了您自己的理解,您可以通过查看 的属性描述符来查看继承的 getter Response.prototype.url:
Object.getOwnPropertyDescriptor(Object.getPrototypeOf(new Response()), \'url\')\n> {get: \xc6\x92, set: undefined, enumerable: true, configurable: true}\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
4135 次 |
| 最近记录: |