Javascript设计模式之创建构造函数和方法
2023-09-27 14:24:30 时间
构造函数和方法
var Book = function (isbn,title,author) {
this.setIsbn(isbn);
this.setTitle(title);
this.setAuthor(author);
}
Book.prototype = {
checkIsbn:function (isbn) {
// todo...
return true;
},
getIsbn:function () {
return this.isbn;
},
setIsbn:function (isbn) {
if (!this.checkIsbn(isbn)) {
throw new Error('Book:Invalid ISBN.');
}
this.isbn = isbn;
},
getTitle:function () {
return this.title;
},
setTitle:function (title) {
this.title = title || 'No title specified';
},
getAuthor:function () {
return this.author;
},
setAuthor:function (author) {
this.author = author || 'No author specified';
},
display:function() {
// todo...
}
}
var book = new Book('isbn','Javascript','Jim');
console.log(book.getIsbn());
console.log(book.getTitle());
console.log(book.getAuthor());
var book1 = new Book('isbn');
console.log(book1.getIsbn());
console.log(book1.getTitle());
console.log(book1.getAuthor());
isbn
Javascript
Jim
isbn
No title specified
No author specified
用命名规范区分私有变量
var Book = function (isbn,title,author) {
this.setIsbn(isbn);
this.setTitle(title);
this.setAuthor(author);
}
Book.prototype = {
checkIsbn:function (isbn) {
// todo...
return true;
},
getIsbn:function () {
return this._isbn;
},
setIsbn:function (isbn) {
if (!this.checkIsbn(isbn)) {
throw new Error('Book:Invalid ISBN.');
}
this._isbn = isbn;
},
getTitle:function () {
return this._title;
},
setTitle:function (title) {
this._title = title || 'No title specified';
},
getAuthor:function () {
return this._author;
},
setAuthor:function (author) {
this._author = author || 'No author specified';
},
display:function() {
// todo...
}
}
用闭包实现私有方法
var Book = function (newIsbn,newTitle,newAuthor) {
// 私有属性
var isbn,title,author;
// 私有方法
function checkIsbn(isbn) {
// todo
return true;
}
// 保护方法
this.getIsbn = function () {
return isbn;
};
this.setIsbn = function (newIsbn) {
if (!checkIsbn(newIsbn)) {
throw new Error('Book:Invalid ISBN.');
}
isbn = newIsbn;
};
this.getTitle = function () {
return title;
};
this.setTitle = function (newTitle) {
title = newTitle || 'No title specified';
};
this.getAuthor = function () {
return author;
};
this.setAuthor = function (newAuthor) {
author = newAuthor || 'No author specified';
};
// 构造函数
this.setIsbn(newIsbn);
this.setTitle(newTitle);
this.setAuthor(newAuthor);
}
// 公有方法
Book.prototype = {
display:function () {
// todo...
}
}
var book = new Book('isbn','Javascript','Jim');
console.log(book.getIsbn());
console.log(book.getTitle());
console.log(book.getAuthor());
静态方法和属性
var Book = (function () {
// 私有静态属性
var numOfBooks = 0;
// 私有静态方法
function checkIsbn(isbn) {
// todo...
return true;
}
// 返回构造函数
return function(newIsbn,newTitle,newAuthor) {
// 私有属性
var isbn,title,author;
// 特权方法
this.getIsbn = function () {
return isbn;
};
this.setIsbn = function (newIsbn) {
if (!checkIsbn(newIsbn)) {
throw new Error('Book:Invalid ISBN.');
}
isbn = newIsbn;
};
this.getTitle = function () {
return title;
};
this.setTitle = function (newTitle) {
title = newTitle || 'No title specified';
};
this.getAuthor = function () {
return author;
};
this.setAuthor = function (newAuthor) {
author = newAuthor || 'No author specified';
};
numOfBooks++;
if (numOfBooks > 5) {
throw new Error('Book:只允许创建5个Book对象');
}
this.setIsbn(newIsbn);
this.setTitle(newTitle);
this.setAuthor(newAuthor);
}
})();
// 公有静态方法
Book.convertToTitleCase = function (inputString) {
// todo...
return inputString;
}
// 公有方法
Book.prototype = {
display:function() {
// todo...
}
}
console.log(Book.convertToTitleCase('test')); // test
var book = new Book('isbn','Javascript','Jim');
console.log(book.getTitle());
var book = new Book('isbn','Javascript','Jim');
console.log(book.getTitle());
var book = new Book('isbn','Javascript','Jim');
console.log(book.getTitle());
var book = new Book('isbn','Javascript','Jim');
console.log(book.getTitle());
var book = new Book('isbn','Javascript','Jim');
console.log(book.getTitle());
var book = new Book('isbn','Javascript','Jim');
console.log(book.getTitle());
test
Javascript
Javascript
Javascript
Javascript
Javascript
...js:46 throw new Error('Book:只允许创建5个Book对象');
相关文章
- 三元运算符的嵌套详解:分别在JSTL、JavaScript和Java中
- 如何在JavaScript中正确引用某个方法(bind方法的应用)
- JavaScript面向对象入门
- JavaScript:队列的封装及面试题击鼓传花队列方法实现案例
- 【JavaScript】剩余参数
- 【JavaScript】RegExp 实例方法
- 【JavaScript】String 实例方法(三)
- 【JavaScript】Object 实例方法
- JavaScript – 数据类型
- 悟透Javascript之 原型prototype
- JavaScript之JS单线程|事件循环|事件队列|执行栈
- JavaScript统计数据处理(6)- ES6数组新增方法
- webstorm javascript IDE调试
- 《JS原理、方法与实践》- Javascript简介
- Java抓取网页数据(原网页+Javascript返回数据)
- 分享7 个VUE项目用得上的JavaScript库
- JavaScript splice() 方法与slice()方法
- javaScript基础练习题
- 在javascript中使用com组件的方法
- JavaScript:prototype属性使用方法
- JavaScript原生Array常用方法
- JavaScript 复制变量的三种方法
- javascript的队列,优先队列,循环队列