运算符:typeof是运算符,运算符需要总结【重要】;

        //单例模式:把描述一件事物的特性进行分组;放在一个实例的下面,某一个特性就是他的一个属性名;
//[实现了分组](单例模式的意义);比以前用很多var一下的,只需要var一次,避免全局冲突,每一个属性都是自己私有的,和别人不冲突,避免了全局变量的污染;
//模块化开发:把一个复杂的页面,按照不同的功能划分成多个模块,例如:百度首页可以分为登录模块,搜索模块,设置模块,注册模块;
//单利模式,是目前我们在项目中非常常用实现模块化开发的设计模式;
/*
var loginModel={
//loginModel也叫命名空间;对象是新开辟的空间,然后我们的loginModel相当于给这个空间起了个名字,所以loginModel既可以叫做对象名,也可以叫做命名空间;(命名空间,说简单的就是:写个对象,开辟个空间,起个名字,就是命名空间了)
check:function(){},
submit:function(){}
};
var registerModel={
check:function(){
loginModel.submit();//获取别人做的功能;
}
}
//A写的loginModel和B写的registerModel放在一个js里不冲突,而且还可以互相引用;
* */
//基于node.js服务的sea.js、reqeire.js实现的模块化开发;

//高级单利模式(惰性载入函数):逼格高的:给命名空间是一个自执行函数,并且形成一个不销毁的作用域,返回的还是一个对象(惰性函数,就是利用闭包内作用域不销毁;属于高级单例模式);如下;
/*
var searchRender=(function(){
var n=0;//不销毁,并且不是全局变量;
return{
eat:function(){
console.log(n);
}
};//返回的还是对象;
})()
* */
//单例模式的弊端;单例模式虽然实现了分组,还处于手工作业模式;不能实现我们的大批量生产的目的;
//我们进行了第一次工业革命;引入了我们的工厂模式;(单例模式是对象,工厂模式就是函数),不需要每次写一遍对象,写一个函数,然后传进去,外面接受下return回来的就可以了;
/*
function creasJsPerson(nane){
var obj={};
obj.name=name;
obj.writeCss=function(){
console.log("我叫"+this.name+",我会写css了;")
};
obj.writeJs=function(){
console.log("我叫"+this.name+",我会写css了;")
};
return obj;
}
var p1=creasJsPerson("broszhu");//传一个名字,就会有下面的方法了;
p1.writeCss();
p1.writeJs();
* */

//工厂模式其实就是一个函数,把创建一个对象的步骤放在一个函数中,实现相同代码的封装;以后再创建,直接执行我们的函数就可以了,没必要再写一遍了;
//函数的意义:函数的封装,可以重复利用,就是工厂模式。
//逼格高的总结:减少冗余代码,降低代码的耦合度;也就是低耦合,高内聚;
/*--------------*/
//工厂模式虽然解决了我们批量生产的问题,但是我们很多情况下需要的是不仅批量生产,而且还可以进行品牌的区分,我们把品牌区分叫做实例识别;
//第二次工业革命。构造函数模式;