javascript - Object.defineProperty 问题 - TypeError: cookieStore.getAll is not a function
问题描述
我Object.defineProperty
用来检测 API 调用。但是,一旦我运行代码,实际功能就会出现“失败错误”。
这是我进行 API 调用的一段代码。
function get_cookie() {
console.log(cookieStore)
try {
// try to get all cookies
cookieStore.getAll()
.then(function(cookies)
{
console.log(cookies)
})
} catch(e) {
console.error(`Failed `)
}
}
// call the function
get_cookie()
这是检测功能(问题可能出在哪里),
function traceCookieStore() {
cookieStore.getAll()
.then(function(cookies)
{
// console.log(cookies);
Object.defineProperty(CookieStore.prototype, 'getAll',{
get: function(){
cookiestoreTrace.push({[CookieStore.prototype.constructor.name]: 'cookieStore.getAll()'});
console.log("cookiestoreTrace->",cookiestoreTrace);
return cookie;
}
})
})
}
traceCookieStore();
错误的措辞是
类型错误:cookieStore.getAll 不是函数
我必须承认我对 JS 承诺并不是很擅长,所以我对如何调试这个问题有点不知所措。
编辑 1:我正在get_cookie()
从 web worker 上下文运行函数,通过调用 API 来获取该域的 cookie cookieStore.getAll
,并且该函数运行正常。该功能traceCookieStore()
是检测是否对 API 进行了调用cookieStore.getAll
,这将钩住 API 调用,然后返回getAll
(即 cookie)的值。
很抱歉,如果我的初始信息还不够,正如我所提到的,我是 Javascript 的新手,并且仍在学习它的来龙去脉。
编辑 2:CookieStore 是提供用于从页面和工作上下文异步设置和获取 cookie 的 API。参考这里
解决方案
以下是帮助我解决此问题的代码模板。
var traceCookieStore = function(obj, propKey) {
var propOriginal = obj[propKey];
Object.defineProperty(obj, prop, {
"get": function(){
//do what you want here
return propOriginal;
}
})
}
我在这里分享这个,因为我没有在 Stackoverflow 上找到任何相关的答案,这可能会对某人有所帮助。祝你好运!
推荐阅读
- ios - 以编程方式在 UITabbarController 中使用自定义 UITabbar
- javascript - 如何在给定字符串之前和之后替换除 100 个字符之外的所有内容?
- react-native - 将 Enzyme 与 React Native 一起使用时出错(导入 glyphmap)
- apache-spark - 既然 SparkSession 是唯一的入口点,为什么 SparkContext 仍然可用?
- reactjs - 将 this.props.history.push 传递给另一个组件的一个变量中的属性。反应 JS
- c++ - 如何使用指针表示法从数组中的元素中减去?
- swift - 为什么我的 swift 代码出现故障?
- mysql - 在 MYSQL 和 PHP 中存储和查询数组或单词组
- c# - 抑制 EF core 3.0.x 初始化消息
- selenium - 无法将字符串与从属性文件中读取的另一个字符串进行比较