技术实践
OOPS-JavaScript
把汽车当作一个物体。汽车有很多特点,如颜色,公司名称,模态名称和价格等。在汽车上,我们可以执行启动、中断和停止等动作。在这里,汽车的特征是属

OOPS编程
使用 OOP,您可以编写更加模块化和可维护的代码。您可以将代码与实际的实体关联起来
把汽车当作一个物体。汽车有很多特点,如颜色,公司名称,模态名称和价格等。在汽车上,我们可以执行启动、中断和停止等动作。在这里,汽车的特征是属性,动作是方法
创建一个用户对象
js
const user = {
name: 'Nehal Mahida',
userName: 'nehal_mahida',
password: 'password:)',
login: function(userName, password) {
if (userName === this.userName && password === this.password) {
console.log('Login Successfully');
} else {
console.log('Authentication Failed!!');
}
},
};
user.login('nehal', 'nehal');
user.login('nehal_mahida', 'password:)');
用类构建一个对象
js
class User {
#password;
constructor(name, userName, password) {
this.name = name;
this.userName = userName;
this.#password = password;
}
login(userName, password) {
if (userName === this.userName && password === this.#password) {
console.log('Login Successfully');
} else {
console.log('Authentication Failed!!');
}
}
setPassword(newPassword) {
this.#password = newPassword;
}
};
const nehal = new User('Nehal Mahida', 'nehal_mahida', 'password:)');
const js = new User('JavaScript', 'js', 'python:)');
nehal.login('nehal_mahida', 'password:)'); // Login Successfully
js.login('js', 'python:)'); // Login Successfully
console.log(nehal.name); // Nehal Mahida
console.log(nehal.password); // undefined
console.log(nehal.#password); // Syntax Error
nehal.setPassword('new_password:)');
nehal.login('nehal_mahida', 'password:)'); // Authentication Failed!!
nehal.login('nehal_mahida', 'new_password:)'); // Login Successfully
抽象
js
class User {
name;
email;
#password;
constructor() {}
#validateEmail(email) {
// check email is valid or not.
return true;
}
#validatePassword(password) {
// check password is satisfying the minimum requirements or not.
return true;
}
signUp(name, email, password) {
let isValidated = false;
isValidated = this.#validateEmail(email);
isValidated &&= this.#validatePassword(password);
if (isValidated) {
this.name = name;
this.email = email;
this.#password = password;
// add user in your db.
console.log('User registered successfuly');
} else {
console.log('Please enter correct Details!!');
}
}
login(email, password) {
if (email === this.email && password === this.#password) {
console.log('Login Successfully');
} else {
console.log('Authentication Failed!!');
}
}
#isRegisteredUser(email) {
// check user is registered or not.
return true;
}
resetPassword(email, newPassword) {
if (this.#isRegisteredUser(email)) {
this.#password = newPassword;
console.log('Operation performed successfully');
}
else {
console.log('No account found!');
}
}
};
const nehal = new User();
nehal.signUp('Nehal Mahida', 'nm@gmail.com', 'password:)'); // User registered successfuly
nehal.#validateEmail('nm@gmail.com'); // Syntax Error.
nehal.login('nm@gmail.com', 'password:)'); // Login Successfully
nehal.resetPassword('nm@gmail.com', ''); // Operation performed successfully
继承
js
class User {
#password;
constructor(email, password) {
this.email = email;
this.#password = password;
}
login(email, password) {
if (email === this.email && password === this.#password) {
console.log('Login Successfully');
} else {
console.log('Authentication Failed!!');
}
}
resetPassword(newPassword) {
this.#password = newPassword;
}
logout() {
console.log('Logout Successfully');
}
}
class Author extends User {
#numOfPost;
constructor(email, password) {
super(email, password);
this.#numOfPost = 0;
}
createPost(content) {
// add content to your DB. :)
this.#numOfPost++;
}
getNumOfPost() {
return this.#numOfPost;
}
}
class Admin extends User {
constructor(email, password) {
super(email, password);
}
removeUser(userId) {
// remove this userId from your DB.
console.log('User Removed successfully.');
}
}
const nehal = new Author('nm@gmail.com', 'password:)');
nehal.login('nm@gmail.com', 'password:)');
nehal.createPost('I hope you are enjoying this article. Don\'t forget to leave your feedback. :)');
nehal.createPost('I am tired, Do you wanna buy me a coffee? :)');
console.log(nehal.getNumOfPost()); // 2
const json = new Admin('jason@gmail.com', '[Object] [object]');
json.login('jason@gmail.com', '[Object] [object]');
json.resetPassword('{id: 1}');
json.login('jason@gmail.com', '{id: 1}');
json.removeUser(12);
多态
js
class User {
constructor(email, password) {
this.email = email;
this.password = password;
}
login(email, password) {
if (email === this.email && password === this.password) {
console.log('Login Successfully');
} else {
console.log('Authentication Failed!!');
}
}
}
class Author extends User {
#numOfPost;
constructor(email, password) {
super(email, password);
this.#numOfPost = 0;
}
createPost(content) {
// add content to your DB. :)
this.#numOfPost++;
}
getNumOfPost() {
return this.#numOfPost;
}
}
class Admin extends User {
constructor(email, password) {
super(email, password);
}
login(email, password) {
// add extra layer of security as this is an admin account.
const isValidAdmin = true; // we can have some 2FA type security check here.
if (email === this.email && password === this.password && isValidAdmin) {
console.log('Admin Login Successfully');
} else {
console.log('Authentication Failed!!');
}
}
removeUser(userId) {
// remove this userId from your DB.
console.log('User Removed successfully.');
}
}
const nehal = new Author('nm@gmail.com', 'password:)');
nehal.login('nm@gmail.com', 'password:)'); // Login Successfully
const json = new Admin('jason@gmail.com', '[Object] [object]');
json.login('jason@gmail.com', '[Object] [object]'); // Admin Login Successfully