一、面向对象思想
封装 继承 多态 封装思想 属性隐藏
二、封装
<script>
//第一种封装(通过定义一个变量(cop),返回一个对象来公开(return {}))
var cop=(function my(){
var a=1;
function foo() {
console.log("函数的执行")
}
console.log("2"+a);
return {test:foo};//把函数foo重命名为test,放在一个对象里面,并返回
})();//在函数后面加个括号就是函数自执行(隐士执行);外界无法调用my这个函数
// console.log(a);//这里打印报错a is not defined.这就是把这个函数做了个隐藏
cop.test();//现在就可以执行foo这个函数了
console.log(cop);//打印出来这个cop是一个对象
//第二种封装(通过window对象来公开;但是这种方法仅限于浏览器)
(function () {
var b=3;
var a=100;
function foo2(){
console.log("函数自执行第二种")
}
console.log(b);//3
var publicObj={foo:foo2,number:b};
// window.aa=publicObj;
window.$=publicObj;//这里的$不是JQ,是自定义的东西,相当于上一句代码中的aa.Object{number:1}
})();
console.log(window.$);
$.foo();
</script>
因为JS没有私有化的概念,所以需要使用封装来实现隐藏,函数的呃自执行就是一个隐藏的方式方法。
属性公开的方法从上面的代码可以看出有两种,第一种是通过定义一个变量来公开。