实践4 JavaScript及其应用(2)

1.设计一个受保护的累加数据,只能通过一个方法往里面添加数据并返回累加结果。


var add = (function () {
    var counter = 0;
    return function () {console.log("第一次累加结果:"+(counter+=1));}
})();
 
add()
add()
add()

运行截图
在这里插入图片描述

2.设计3个类,形状类、矩形类(继承形状类)、正方形类(继承矩形类),创建一个矩形对象和一个正方形对象,分别求取其面积。

//设计3个类,形状类、矩形类(继承形状类)、正方形类(继承矩形类),创建一个矩形对象和一个正方形对象,分别求取其面积。
function Shape() {
    this.Area = function(a,b){
        return a*b;
    }
       }
     
       //子类型
function Rectangle(length,wide) {
       this.length = length
       this.wide = wide;
	   
    };
       
Rectangle.prototype = new Shape() // 子类型的原型为父类型的一个实例对象
  
function Square(side) {
       this.side = side;
      

       }
Square.prototype = new Rectangle();
       var Rectangles1 = new Rectangle(3,5);
       var Squares2 = new Square(6);
       console.log("矩形面积为:"+Rectangles1.Area(Rectangles1.length,Rectangles1.wide));
	   console.log("正方形面积为:"+Squares2.Area(Squares2.side,
	   Squares2.side));
测试:
矩形长:3
矩形宽:5
正方形边长:3

运行结果:
矩形面积为:15
正方形面积为:36

运行截图
在这里插入图片描述

3.设计一个学生类,当对其成绩属性赋值时,如果成绩不在0~100之间则抛出异常。

var Student = { 
	_grade:null
};
Object.defineProperty(Student,"Grade",{
	get:function(){
			 try{
				if (this._grade==null){
					throw "该同学成绩未输入。"
				}
			   else if(this._grade>100)
				   throw "成绩为"+this._grade+" 成绩超过100,请重新输入!!"
			   else if(this._grade<0)
				   throw "成绩为"+this._grade+" 成绩低于 0 ,请重新输入!!"
			   else 
				 return "该同学成绩正确,为"+this._grade;  
		   }
		   catch(err){
			   return err;
		   }
	},
	set: function(newGrade){
	
		this._grade = newGrade;
	}
});
//console.log(Object.getOwnPropertyDescriptor(Student,"Grade"));
console.log("原来成绩为:"+Student.Grade);
Student.Grade=155;
console.log(Student.Grade)
测试1:
输入成绩:-55
运行结果:
原来成绩为:该同学成绩未输入。
成绩为-55 成绩低于 0 ,请重新输入!!

测试2:
输入成绩:155
运行结果:
原来成绩为:该同学成绩未输入。
成绩为155 成绩超过100,请重新输入!!

测试3:
输入成绩:55
运行结果:
原来成绩为:该同学成绩未输入。
该同学成绩正确,为55

运行截图:
结构框架
在这里插入图片描述
测试1:
在这里插入图片描述

测试2:
在这里插入图片描述
测试:3:
在这里插入图片描述

4.编写一个async函数,用于等待指定秒数。

async function a(){//async函数
    console.log(21);
    setTimeout(x=>console.log(22,x), 3000, 'OK');//异步操作,不会阻塞
    console.log(23);
}
function b(f,t,m){//f=1:模拟成功,f=0:模拟失败,t:延时,m:信息
    console.log(31);
    return new Promise((resolve,reject)=>{//可阻塞
        console.log(32);
        setTimeout(x=>{
            console.log(33);
            if(f)resolve(x);//成功
            else reject(x);//失败
            console.log(34);
        },t,m);
        console.log(35);
    });
}
console.log(1);
(async ()=>{//匿名async函数,await只能出现在async函数体中
    try{
        console.log(11);
        console.log(12,await a());//异步操作未阻塞
        console.log(13,await b(0,1000,'reject'));//阻塞,抛出异常,后续代码不再执行
        console.log(14,await b(1,1000,'resolve'));//阻塞,传回数据
        console.log(15);
    }catch(err){
        console.log(16,err);//捕获异常
    }
})();
console.log(2);


测试:
等待秒数: 22
运行结果:22 ok

运行截图:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值