gpt4 book ai didi

javascript - 使属性可调用或不可调用

转载 作者:行者123 更新时间:2023-12-03 16:29:22 25 4
gpt4 key购买 nike

我想使一个属性可调用或不可调用。例如:

function Test () {
var obj = { someString: 'here is text' };

Object.defineProperty(obj, 'string', {
get: function() {
return obj.someString;
},
set: function() {
return function(val) {
obj.someString = val;
}
}
});

return obj;
}

var test = new Test();

我可以这样做:

test.string//最初返回 'here is text'

test.string('new text here')//将 obj.someString 设置为 'new text here'

test.string//返回'下一个文本'

上面的代码目前没有按照我想要的方式运行。有没有办法在 JavaScript 中做这样的事情?是否使用 Object.defineProperty

最佳答案

我不确定是否可以这样做。相反,如果设置了函数参数并且没有函数读取属性,您可以做条件判断:

function Test () {
var obj = {
someString: 'here is text',
string: function(val) {
if(val == undefined) { // If the val parameter was not defined
return this.someString; // Just return the property someString
} else { // Otherwise,
this.someString = val;
}
}
};
return obj;
}

var Tmp = new Test();
console.log(Tmp.string()); // This outputs 'here is text'
Tmp.string('New text!'); // This sets someString to 'New Text!'
console.log(Tmp.string()); // This outputs 'New Text!'

这与您想要的之间的主要区别在于,您调用的不是调用 Tmp.string 来检索值,而是调用 Tmp.string()。

这是我的 jsfiddle

关于javascript - 使属性可调用或不可调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43902656/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com