js12---闭包,原型,继承

<html>
<body>
<script type="text/javascript">
//闭包实现了函数层面多个子函数共享父类函数的属性、方法(继承)。类层面上原型实现了多个子类对象共享父类对象的属性、方法(继承)。
//函数每调用一次,就会开启一个新的内存区域让函数执行。类的成员方法也是,每调用一次就开辟一个新的内存区域。
function f1(){
    var b = 1;
    var c = function(){alert(123);}
    return function(g){
        b++;
        if(g == 0){
            c = function(){alert(b);alert(456);}
        }
        c();
    }
}

var d1 = f1();//大函数return函数模版,函数模版多次执行时地址不一样,
alert("===");
d1(1);//123
alert("---");
d1(0);//3  456,改变了大函数的c
alert("+++");
d1(1);//4  456,使用改变了的c

var d2 = f1();//大函数return函数模版,函数模版多次执行时地址不一样,
alert("===");
d2(1);//123
alert("---");
d2(0);//3  456,改变了大函数的c
alert("+++");
d2(1);//4  456,使用改变了的c
</script>
</body>
</html>

 

        var cat = (function(){//函数嵌套,就是类中类,
            //私有静态属性
            var AGE = 10;
            //私有函数
            function add(x,y){
                return x+y;
            }
            return function(){
                //多个子类,使用外层闭包的公有的属性和方法
                this.age = ++AGE;
                this.add = function(x,y){
                    //alert(age);//age is not defined
                    return add(x,y)
                }
                this.setAge = function(age){
                    AGE = age;
                }
            }
        })()
        alert(new cat().add(1,2));//3,new的时候函数会执行一次
        alert(new cat().age);//12
        new cat().setAge(100);
        alert(new cat().age);//101

 

function Person(name , age){
            this.name = name ; 
            this.age  = age ; 
            this.sayName = function(){alert('我是姓名!')};//sayName指的是函数模型,不同对象的成员方法执行都会开辟新内存区域,
        }
var p1 = new Person('z3',20);
var p2 = new Person('z4',21);
alert(p1.sayName == p2.sayName);     // false 

 var定义的属性和方法相当于是私有的属性和方法,不同函数对象的方法的地址是不一样的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值