// 对象收编变量
var checkObject = {
checkName(){return this},
checkEmail(){return this}
}
checkObject.checkName().checkEmail();// this指向当前对象,return this后可以链式调用;
var checkObject = function(){// 这种写法的作用: 每次调用都会返回新的对象,这样每个人使用时就不会互相影响
return {
checkName(){},
checkEmail(){}
}
}
var checkObject = function(){}
checkObject.prototype.checkEmail = function(){};// 这样写创建实例的时候,使用该方法都要依赖prototype原型依次寻找,而找到的方法都是同一个,他们都绑定在checkObject对象类的原型上
checkObject.prototype.checkName = function(){}
checkObject.prototype = {// 等同上边的写法,但是这两种写法不能混用,会发生覆盖。
checkEmail(){},
checkName(){}
}
// 拓展js原生对象
Function.prototype.addMethod = function(name, fn) {
this[name] = fn;
return this;
}
var methods = function(){};
methods.addMethod('checkName',function(){ return this; });// 通过这种方式添加的方法添加在了methods实例上,不会污染Function原型给团队其他人造成影响
methods.addMethod('checkEmail',function(){ return this; });
methods.checkEmail().checkEmail();// 由于return this,所以调用时可以链式调用;
methods.addMethod('checkName',function(){}).addMethod('checkEmail',function(){});// 链式调用理由同上;
// 理解静态,非静态: 静态指在new 类的时候不会拷贝一份到实例中,非静态在new的时候会拷贝到实例中
// 理解私有非私有
var Book = (function(){
var bookNum = 0;// 静态私有变量
function checkBook(name){};// 静态私有方法
function _book(newId,newName,newPrice){
var name,price;// 私有变量
function checkId(id){}// 私有方法
// 特权方法
this.getName = function(){};
this.getPricce = function(){};
this.setName = function(){};
// 公有属性
this.id = newId;
// 公有方法
this.copy = function(){};
// 构造器
this.setName(name)
}
_book.prototype = {
isJsBook: false,// 静态公有属性
display: function(){}// 静态公有方法
}
return _book;
})
js设计模式
最新推荐文章于 2024-01-17 11:17:48 发布