gpt4 book ai didi

javascript - 如何检查JavaScript中是否调用了对象属性或函数?

转载 作者:行者123 更新时间:2023-11-28 03:08:34 35 4
gpt4 key购买 nike

我想检查我的对象属性和方法或其他任何内容是否被调用?例如,

// functions 

function app(){
return {
name : 'Md Tahazzot',
info : function(){
return this.name;
}
};
}

现在,如果我像 app() 那样调用它,我的意思是在这种情况下,我不会被称为任何对象属性或方法。那么,是否可以检查一下我是否只被称为函数而不是像这样的 app().name

最佳答案

您可以返回一个代理。如果曾经调用过代理的 getter(或 setter?),那么您就知道除了简单地调用该函数之外还做了一些事情 - 尝试在返回的对象上获取或设置属性: p>

function app() {
const target = {
name: 'Md Tahazzot',
info: function() {
return this.name;
}
};
return new Proxy(target, {
get(target, prop) {
console.log('Get attempted');
return target[prop];
},
set(target, prop, newVal) {
console.log('Set attempted');
return target[prop] = newVal;
}
});
}

console.log('Creating "a":');
const a = app();

console.log('Creating "b":');
const b = app();
b.name;

console.log('Creating "c":');
const c = app();
c.foo = 'foo';
console.log(c.foo);

如果您必须从应用外部执行此操作,请在返回对象后应用相同的逻辑:

function app() {
return {
name: 'Md Tahazzot',
info: function() {
return this.name;
}
};
}

const obj = new Proxy(app, {
get(target, prop) {
console.log('Get attempted');
return target[prop];
},
set(target, prop, newVal) {
console.log('Set attempted');
return target[prop] = newVal;
}
});

console.log('Proxy created');
obj.name;

关于javascript - 如何检查JavaScript中是否调用了对象属性或函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60370978/

35 4 0
文章推荐: javascript - 我需要在网页中单击 标记时调用 Javascript 函数来显示和隐藏
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com