例3:圣杯模式:这个方法和上面的那个都行,但是最好写下面这个!
var inherit = (function (){
var F = function (){};
return function (Target,Origin){
F.prototype = Origin.prototype;
Target.prototype = new F();
Target.prototype.constructor = Target;
Target.prototype .uber = Origin.prototype;
}
}());
补充:
CSS知识:css中但凡是文字类的属性包括文字类的颜色font-size等,文字类属性有一个传递的特性,如果子元素没设置文字类属性的话,就默认继承父元素的文字类属性。所以font-size默认属性就是inherit。
原型只是实现继承的一种方法,提升不到工业化的程度
63.命名空间
1.好处:管理变量,防止污染全局,适合模块化开发
2.污染全局变量的解决方法两种:
(1)老办法解决冲突的方法:命名空间(其实就是org),但是现在一般都用webpack
例1:
var org = {
department1 : {
liufangyan : {
name : 124,
age : 21,
},
liuyangyan : {
}
},
department2 : {
liuyuanyuan : {
name : 124,
age : 27,
}
}
}
var liufangyan = org.department1.liufangyan;
liufangyan.name;
(2)利用闭包实现变量私有化,不会污染全局变量,下例中,就是将特定的功能放进闭包中去,然后留出一个函数作为接口方便以后的启用,将函数传给init。
其实也就是将全局变量要实现的功能放在了局部中,就是让各自互相不污染。这样以后要是自己要实现一个功能,这个功能是可以复用的(重复使用),就可以把这个功能提取到这样的一个闭包中,保存到文件夹中,以后用就可以copy过来,根本不用担心什么污染的问题
例2:
var name = 'LFY';
var initLiu = (function (){ //init叫做初始化,把入口函数,即最开始启动的函数叫做init
var name = 'LYY';
function callName(){
console.log(name);
}
return function (){
callName();
}
}())