javascript_继承_JSON_ZHOU125disorder_

继承

 面向对象实现继承的几种方式:
        继承:继承父级样式
        1.原型链继承
        2.构造函数继承
        3.组合继承

原型链继承

// 核心:将父类的实例作为字类的原型
// 缺点:父类新增原型方法/属性,字类都可以访问到,父类一变,其他的都变了

        function Person(name){
            this.name = name;
        }
        Person.prototype.getName = function(){
            return this.name;
        }
        // var person = new Person("卡卡西");
        // console.log(person.getName());  //卡卡西
        // 新的构造函数
        function Parent(age){
            this.age = age;
        }
        Parent.prototype = new Person("鞠婧祎");      //关键  通过构造函数创建一个新的对象,并赋值给新构造函数的原型
        Parent.prototype.getAge = function(){
            return this.age;
        }
        Parent.prototype.getName = function(){
            return "薛之谦";
        }
        var parent = new Parent(18);
        console.log(parent.getAge());   //18
        console.log(parent.getName());  //薛之谦

构造函数继承

        // 构造函数继承(和原型没有关系)
        // 借用构造函数的思想利用call或者apply把父类中通过this指定的属性和方法复制过来
        // 核心:使用父类的构造函数来增强字类实例,等于是复制父类的实例属性给字类
        // 缺点:方法都是在构造函数中定义,只能继承父类的实例属性和方法,不能继承原型属性和方法,无法实现函数复用,影响性能
        function Person(name){
            this.name = name;
            this.word = ["火影","风影"];
            this.getName = function(){
                return this.name;
            }
        }
        function Parent(age){
            Person.call(this,"卡卡西");       //关键          复制Person的属性和方法
            this.age = age;
        }
        var parent = new Parent(30);    
        console.log(parent.age);        //本身的    30
        console.log(parent.name);       //复制Person    卡卡西
        console.log(parent.word);       //0: "火影" 1: "风影"
        console.log(parent.getName());  //卡卡西

组合继承

        // 组合继承
        // 所有实例都能拥有自己的属性,并且可以使用相同的方法,通过上面的两种方式结合体,结合了两者有点,也是最常用的继承方式
        // 核心:通过调用父类的构造,继承父类的属性并保留传参的优点,然后再通过将父类实例作为字类的原型,实现函数复用
        function Person(name){
            this.name = name;
            this.word = ["火影","风影"];
        }
        // 原型方法
        Person.prototype.getName =  function(){
            return this.name;
        }
        function Parent(age){
            Person.call(this,"卡卡西");       //构造函数继承
            this.age = age;
        }
        // 原型链继承
        Parent.prototype = new Person("卡卡西");
        var parent = new Parent(18);
        console.log(parent.name);   //卡卡西
        console.log(parent.word);   //array
        console.log(parent.age);    //18
        console.log(parent.getName());  //卡卡西
        parent.word.push("水影");   
        console.log(parent.word);   //array

JSON

        // JSON是一种轻量级的数据格式
        // 用来存储的表示数据的
        // JSON并不是js当中独有的数据格式
        // JSON的语法可以表示3种类型的值
        // 1.简单值 2.对象 3.数组
        // 包括字符串,数值,布尔值,null不包含特殊值undefined
        // "卡卡西"       最简单的JSON的表示方法

普通形式

        var person = {
            name:"卡卡西",
            age:30
        }

JSON表示方法

 		'{"name":"卡卡西","age":"30"}'
        '["卡卡西",30,true]'
        // 一般情况下,JSON的结构是一种复杂形式,也就是数组结合对象的形式
        var json = '[{"name":"李华","age":"18"},{"name":"韩梅梅","age":"20"},{"name":"李雷","age":"22"}]'

序列化和反序列化

        // 就是指JSON格式的数据和普通数组对象格式的来回转换
        // 序列化:如果是原生的js值,也就是原生的数组对象,可以转换成JSON字符串
        // 反序列化:加载好的JSON文件,转成可以正常解析的原生js值,也就是数组对象

序列化

        var json = [{"name":"李华","age":"18"},{"name":"韩梅梅","age":"20"},{"name":"李雷","age":"22"}]
        JSON.stringify()
        console.log(JSON.stringify(json));
        console.log(typeof JSON.stringify(json));
      	// JSON.stringify()提供了第二个参数,可以是数组,也可以是函数,用于过滤,也提供了第三个参数,过滤排版
		console.log(JSON.stringify(json,["name"]));
        console.log(JSON.stringify(json,function(key,value){
            if(key=="name"){
                return "Mr."+value;
            }else{
                return value;
            }
        }))
        var txt = JSON.stringify(json,["name","age"],~);
        var txt = JSON.stringify(json,["name","age"],"@");
        console.log(txt);

反序列化/解析

JSON.parse

         console.log(JSON.parse(json));
         console.log(typeof JSON.parse(json));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
请解释分析下面这段程序:%%%无序充电投标 clear clc load data_disorder Pch=[Pch_CS1_disorder;Pch_CS2_disorder;Pch_CS3_disorder;Pch_CS4_disorder];%充电站充电功率 %市场出清问题 Link=zeros(24,96);%时段换算矩阵(日前1h换算为实时15min) for i=1:24 Link(i,4*i-3:4*i)=1; end Loadcurve=[0.955391944564747,0.978345604157644,1,0.995019488956258,0.972932005197055,0.970333477695972,0.930489389346037,0.890428757037679,0.902771762667822,0.941966219142486,0.911000433087917,0.862061498484192,0.840190558683413,0.831095712429623,0.756604590731919,0.671719359029883,0.611520138588133,0.582936336076224,0.572542226071893,0.574707665656128,0.587267215244695,0.644218276310091,0.755521870939801,0.884798614118666]; Loadcurve=Loadcurve*Link;%换成96个时段 PL_base=[5.704;5.705;5.631;6.518;4.890;5.705;5.847]*1000;%负荷分布 PL=PL_base*Loadcurve;%基础负荷(负荷曲线从08:00开始算起,即第9个时段) Pf=sdpvar(7,96);%馈线功率 Pf(1,:)=PL(1,:)+Pch(1,:);Pf(2,:)=PL(2,:);Pf(3,:)=PL(3,:);Pf(4,:)=PL(4,:)+Pch(2,:);Pf(5,:)=PL(5,:)+Pch(3,:);Pf(6,:)=PL(6,:);Pf(7,:)=PL(7,:)+Pch(4,:);%馈线功率组成 Pg=sdpvar(10,96);%发电商分段电量 Pg_step=1000*[20,5,3,2,2,2,2,2,2,inf]';%报价区间 Price_DSO=[3:12]'*0.1;%分段电价 Obj=0.25*sum(sum((Price_DSO*ones(1,96)).*Pg));%目标为用电费用最小 Constraint=[0<=Pg<=Pg_step*ones(1,96),sum(Pg)==sum(Pf)];%约束条件 optimize(Constraint,Obj);%求解线性规划问题 Pg=double(Pg);%发电机功率 Pf=double(Pf);%馈线功率 isPg=(Pg>0);%为了计算出清电价,计算发电机分段选择情况 DLMP=sum(isPg)/10+0.2;%出清电价计算 %绘图 figure(1)%节点边际电价 stairs(DLMP); xlabel 时间 ylabel 电价(元/kWh) ylim([0.3,1.3]) figure(2)%负荷曲线 hold on plot(sum(PL)/1000); plot(sum(Pf)/1000,'r.-'); xlabel 时间 ylabel 负荷(MW) legend('基础负荷','无序充电负荷') Cost=sum(sum(Pch).*DLMP);%总用电费用 result_disorder.Cost=Cost;result_disorder.DLMP=DLMP;result_disorder.Pf=Pf;result_disorder.Pg=Pg;%结果保存 save('result_disorder','result_disorder');
最新发布
06-14

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值