Javascript 是一种基于原型的编程语言,而不是面向对象的语言。
ES6实现了class关键字,让js看起来更像一门面向对象的语言
主流语言类型:
每种语言的编程风格和语法都会有所不同。
Javascript虽然没有内置的类实现,但是可以模拟。 Javascript有构造函数和new运算符,我们可以通过构造函数实例化一个对象。
当使用new关键字调用构造函数时,执行上下文变成空上下文游戏素材,代表新生成的实例游戏动态,所以this指向当前创建的实例。
面向对象应该是应用最广泛的编程思想。 如果你不明白这一点,你需要带上自己的梯子
说到面向对象面向对象的游戏开发,首先让我想起的就是C++。 在我的印象中,C++是一门严格遵循面向对象、封装、继承、多态思想的语言。 不仅如此,它还支持多重继承,这是很多其他语言所没有的。
Javascript面向对象的实现
说到面向对象,最直观的方式就是通过class关键字来声明,因为js还没有实现这个关键字(ES6已经实现),这里我们可以直接使用构造函数来模拟。 (以C++为例,在生成对象时,也会调用构造函数创建对象)
面向对象的三个特点:
创建一个动物类
var Animal = function(){
/*属性*/
this.name = "animal";
/*方法[函数、方法,在这里为什么不称为函数而称之为方法?]*/
this.talk = function(){
console.log("what's your name?");
}
}
实例化对象
var Cat = new Animal;
var Dog = new Animal;
在实例化一个对象的时候,一般都需要进行初始化设置,可以通过在构造函数中传递参数来实现
var Animal = function(name){
/*属性*/
this.name = name || "Animal";
/*方法*/
this.talk = function(){
console.log("My name is: ", name);
}
}
var cat = new Animal("Cat"); /*名字是Cat*/
var dog = new Animal("Dog"); /*名字是Dog*/
阐明:
var name;
name = pname || "Animal";
/*与下面的功能等同*/
var name;
if(pname){
name = pname;
}else{
name = "Animal";
}
这是js的一个默认值设置技巧。 当 pname == undefined 时,name 赋值为“Animal”面向对象的游戏开发,否则 name 等于 pname