| 赞 | 14 |
| VIP | |
| 好人卡 | |
| 积分 | 24 |
| 经验 | |
| 最后登录 | 2026-9-4 |
| 在线时间 | 411 小时 |
- 梦石
- 0
- 星屑
- 2419
- 在线时间
- 411 小时
- 注册时间
- 2021-11-7
- 回帖
- 171
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有账号?注册会员
×
本帖最后由 夏虫沉默 于 2021-11-25 22:36 编辑
JavaScript es6中提供了类的关键字class,现在js可以通过class关键字模拟类的写法,看上去更像其他面向对象的语言(java、c++之类的)了;
然后我就尝试了一下新的写法,大家可以参考下:
[pre lang="javascript" line="1"]//乘降窗口DriveWindow继承自Window_Command
class DriveWindow extends Window_Command{
constructor(x,y){
super(x,y);
}
makeCommandList(){
this.addCommand("1号上车/下车",'onJu1',true);//队列里排序1的角色上车
this.addCommand("2号上车/下车",'onJu2',false);//队列里排序2的角色上车,默认关闭
this.addCommand("3号上车/下车",'onJu3',false);//队列里排序3的角色上车,默认关闭
this.addCommand("取消",'cancel',true);
}
}
//乘降页面DriveScene继承自Scene_MenuBase
class DriveScene extends Scene_MenuBase{
constructor(x,y){
super(x,y);
}
create() {
super.create(this);//调用父类Scene_MenuBase的create方法效果类似于:Scene_MenuBase.prototype.create.call(this);
this._driveWindow=new DriveWindow(5,195);
this.addWindow(this._driveWindow);
this._driveWindow.setHandler('cancel',this.popScene.bind(this));//使得按取消可以返回上一视图,不然无法返回
this._driveWindow.setHandler('onJu1',this.onDriveJu1.bind(this));
this._driveWindow.setHandler('onJu2',this.onDriveJu2.bind(this));
this._driveWindow.setHandler('onJu3',this.onDriveJu3.bind(this));
};
}
[/pre]
旧代码[pre lang="javascript" line="1"]//以下是之前的写法
//绘制乘降窗口
function DriveWindow(){
this.initialize.apply(this, arguments);
}
DriveWindow.prototype = Object.create(Window_Command.prototype);
DriveWindow.prototype.constructor = DriveWindow;
DriveWindow.prototype.initialize = function(x,y) {
Window_Command.prototype.initialize.call(this, x, y);
};
//绘制乘降视图
function DriveScene(){
this.initialize.apply(this, arguments);
}
DriveScene.prototype = Object.create(Scene_MenuBase.prototype);
DriveScene.prototype.constructor = DriveScene;
DriveScene.prototype.initialize = function(x,y) {
Scene_MenuBase.prototype.initialize.call(this);
};
//绘制乘降命令
DriveWindow.prototype.makeCommandList = function() {
this.addCommand("1号上车/下车",'onJu1',true);//队列里排序1的角色上车
this.addCommand("2号上车/下车",'onJu2',false);//队列里排序2的角色上车,默认关闭
this.addCommand("3号上车/下车",'onJu3',false);//队列里排序3的角色上车,默认关闭
this.addCommand("取消",'cancel',true);
}
//当乘降视图打开时调用
DriveScene.prototype.create = function() {
Scene_MenuBase.prototype.create.call(this);
this._driveWindow=new DriveWindow(5,195);
this.addWindow(this._driveWindow);
this._driveWindow.setHandler('cancel',this.popScene.bind(this));//使得按取消可以返回上一视图,不然无法返回
this._driveWindow.setHandler('onJu1',this.onDriveJu1.bind(this));
this._driveWindow.setHandler('onJu2',this.onDriveJu2.bind(this));
this._driveWindow.setHandler('onJu3',this.onDriveJu3.bind(this));
};
[/pre]
我又花了一些时间学习JS新的ES内容,原来ES6是15年新出的,(从某种程度上来说,已经不新了),有时间的话,会留下一些学习笔记,学习笔记尚杂乱。
以下部分内容参考于作者:zhoujie
来源:https://www.cnblogs.com/zhoujie/p/node1.html
解构赋值[pre lang="javascript" line="1"]//解构赋值可以方便地交换两个变量的值
var a1 = 15,a2 = 20;
[a1, a2] = [a2, a1];
console.log(a1+","+a2);//输出 20,15
//let和var一样都可以用来定义变量,let的作用域是局部
let [x, y, z] = [7, 8, 9];//意义同let x = 7,y = 8, z = 9;
[/pre]
箭头函数=>[pre lang="javascript" line="1"]//操作符=>左边为参数,右边为具体操作和返回值。
var sum = (num1, num2) => { return num1 + num2; }//求和函数(/方法),意义同var sum = function(num1, num2) { return num1 + num2;};
//箭头函数还修复了this的指向,使其永远指向词法作用域:
var obj = {
birth: 2000,
getAge: function () {
var b = this.birth; // 2000
var fn = () => new Date().getFullYear() - this.birth; // this指向obj对象,2021-2000
return fn();
}
};
console.log(obj.getAge()); // 输出21
[/pre]
操作符...[pre lang="javascript" line="1"]//通过...可以将数组作为参数直接传入函数:
var people=['Wayou','John','Sherlock','Feihu'];
function sayHello(people1,people2,people3,people4){
// console.log('Hello '+people1+','+people2+','+people3+','+people4);//不使用反引号·的写法
console.log(`Hello ${people1},${people2},${people3},${people4}`);//(`反引号位于左边数字键盘1的左边)这样更方便对字符串的操作,通过${变量名}的方式直接取变量值
}
sayHello(...people);//输出:Hello Wayou,John,Sherlock,Feihu
sayHello(people[0]);//输出:Hello Wayou,undefined,undefined,undefined
[/pre] |
|