我可以像这样使用JavaScript对象
var member = {
firstName:"XYZ",
lastName:"zzz",
get fullName(){ return (this.firstName + ' ' + this.lastName); }
}
我甚至可以像这样添加更多属性
member.isGuest = true;
但有没有办法可以将getter添加到已有的对象中?像这样的东西
member.isGuest = get isGuest(){ return this.firstName=='Guest'; }
答案 0 :(得分:43)
尝试defineProperty
Object.defineProperty(member, 'isGuest', {
get: function() { return this.firstName=='Guest' }
});
答案 1 :(得分:9)
您可以这样使用新的Object.defineProperty:
Object.defineProperty(
member,
'prop',
{
get: function() {
return this.lastName.toUpperCase()
}
}
);
过去你必须使用__defineGetter__
,但现在它已被弃用。
答案 2 :(得分:1)
此外,您可以添加自定义getter并保留旧值,如果它不应该从其他值计算,例如在您的示例中。为此,请使用如下的无限函数创建其他上下文层:
df = df.apply(pd.to_numeric, downcast='float')
答案 3 :(得分:1)
不仅可以使用上述解决方案,而且可以使用...
运算符。
"[a-zA-Z]+ [a-zA-Z]+ [0-9][0-9]*
s = ptnt_txt.read()
my_txt_pull = re.findall("[a-zA-Z]+\s+[a-zA-Z]+\s+[0-9][0-9]*", s, re.M)
if my_txt_pull:
for item in my_txt_pull:
captured_text.append(item.replace('\n', ' '))
是散布运算符,它“散布”它所使用的对象的内容,因此也就是名称。例如:
// Initialize x
var x = {
x: 5
}
// Log x.x and x.y
console.log(x.x, x.y /* undefined */)
x = {
...x, // {...x} is the same as {x: x.x}
// The getter
get y() {
return this.x
}
}
// Log x.x and x.y
console.log(x.x, x.y /* Not undefined */)
// Set x.x to 1234
x.x = 1234
// Log x.x and x.y
console.log(x.x, x.y)
与...
doSomething(...[1, 2, 3])
与doSomething(1, 2, 3)
答案 4 :(得分:-5)
你只能在类中使用get和set,这意味着getter和setter方法。但你可以在课堂上添加一个功能:
member.isGuest = function isGuest(){ return this.firstName=='Guest';}
member.isGuest()
获取意味着可以读取属性! 设置意味着可以写属性! 你可以在书中看到它“JavaScript:The.Definitive.Guide”6章第6章!