微信小遊戲開發之JS面向對象

//遊戲開發之面向對象
//在js的開發模式中有兩種模式:函數式+面向對象
//1.es5
// 拓展一:函數的申明和表達式之間的區別
// 函數的申明:
// function funA(){
//
// }
// 表達式的寫法:(推薦)
// let funB=function(){
//
// }
// 區別在於表達式的寫法是會變量的提高!在執行的時候會要去合適的判斷才執行
// callback&&callback()

// (function () {
// //所要執行的......
// })()
// 1.最簡單的建立對象的:(單一)
// var obj=new Object();
// var obj={}
//
// obj.name="xie";
// obj.age=21;
// obj.say=function(){
// console.log(this.name+this.age);
// }
// 2.工廠化構造函數建立(擁有共同的方法)
var Animal=function(name,age) {
this.name=name;
this.age=age;
this.say=function(){
console.log(this.name+" "+this.age);
}
}
//原型鏈對象 實例共享屬性
Animal.prototype.say=function(){
console.log(this.name+""+this.age);
}
var cat=new Animal("小狗","3")
cat.say();
// 方法被其餘對象執行
var params={
name:'小貓',
age:4,
}
//cat的say方法被params這個對象調用,而且採用params的參數
apply:方法能劫持另一個對象的方法,繼承另一個對象的屬性.
Function.apply(obj,args)方法能接收兩個參數
obj:這個對象將代替Function類裏this對象
args:這個是數組,它將做爲參數傳給Function(args-->arguments)
/*定義一我的類*/
3 function Person(name,age)
4 {
5 this.name=name;
6 this.age=age;
7 }
8 /*定義一個學生類*/
9 functionStudent(name,age,grade)
10 {
11 Person.apply(this,arguments);
12 this.grade=grade;
13 }
14 //建立一個學生類
15 var student=new Student("qian",21,"一年級");
16 //測試
call示例
在Studen函數裏面能夠將apply中修改爲以下:
Person.call(this,name,age);
cat.say.apply(params)
 
 
 
ES6:
class Animal{
constructor(name="",age=1){
this.name=name;
this.age=age;
}
say(){
console.log(this.name+this.age);
}
}
class Cat extends Animal{
constructor(name,age){
super(name,age);
}
//覆蓋父類的方法
say(){
//想要執行父類的方法
super.say();
}
}
相關文章
相關標籤/搜索