gpt4 book ai didi

javascript - JavaScript OOP 中什么时候需要使用 "get"关键字

转载 作者:行者123 更新时间:2023-12-01 00:53:54 24 4
gpt4 key购买 nike

我正在用 JavaScript 中的 OOP 刷新我的内存,但我有点困惑。我只是选择我的一个项目并尝试将其转换为 OOP。 “获取”关键词真的很重要吗?让我们看下面的代码:

class Cipher {
constructor (str) {
this.str = str;
}

normalizedPlainText() {
return this.str.replace(/\W/g,'').toLowerCase();
}

size() {
return this.normalizedPlainText(this.str).length;
}

isValid() {
if ( this.size(this.str) >= 50 ) return true;
}

squareRoot() {
return parseInt(Math.sqrt(this.size((this.str))));
}

nbrRows() {
return this.squareRoot(this.str);
}

get nbrCols() {
if ( Math.pow(this.squareRoot(this.str), 2) === this.size(this.str)) return this.squareRoot(this.str);
else return this.squareRoot(this.str) + 1;
}
}



const cipher = new Cipher('Your description gives people the information they need to help you answer your question##8.');
console.log('sqrt '+cipher.squareRoot())
console.log('Nbr rows ' + cipher.nbrRows()) //good output
console.log('Nbr cols ' + cipher.nbrCols) // good output too

在设计我的程序时,我想知道是否可以使用“get”。所以 O 确实尝试过,正如您在 get nbrCols() 中看到的那样。如果我放置 get nbrRows() 并调用它 cipher.nbrRows() ,除非我将其调用方式更改为 cipher.nbrRows,否则我会收到错误。所以我的结论是:这取决于你。如果您使用“get”,则不使用()来调用它,或者如果您不使用它,则使用()来调用它。我是错了还是错过了什么?

最佳答案

通过使用 get 语法,您可以向对象添加 getter,这些是在 ES5 (2009) 中引入的。

参见:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get

您当然可以添加显式 getProperty 函数,而不是使用 getter。

访问 getter 时不使用括号,

无论您使用哪种技术都取决于您,每种技术都有自己的优点,

例如:

let person = { 
_age: 42,
get age() {
console.log("getter called!");
return this._age;
},
set age(age) {
console.log("setter called!");
this._age = age;
},
getAge() {
return this._age;
}
}

console.log("Age: ", person.age);
console.log("Age (using getAge()): ", person.getAge());

// Assign age using setter
person.age = 21;
console.log("Age (after set): ", person.age);

关于javascript - JavaScript OOP 中什么时候需要使用 "get"关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56752650/

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