复制以下代码,使用node xxx.js 即可运行
/***********************************
* 使用class关键字定义类(ES6 语法)
***********************************/
class Person{
constructor(name, age) {
this.name = name;
this.age = age;
}
setName(name){
this.name = name;
}
getName(){
console.log(this.name);
}
}
person1 = new Person("yoyo",22);
person1.getName();
person1.setName("优优");
person1.getName();
console.log("---------------------------");
/***********************************
* 使用prototype关键字定义类
***********************************/
function Dog(name,color){
this.name = name;
this.color = color;
}
Dog.prototype.setName = function(name){
this.name = name;
}
Dog.prototype.getName = function(){
console.log(this.name);
}
dog1 = new Dog("xiaohua","black");
dog1.getName();
dog1.setName("小花");
dog1.getName();
console.log("---------------------------");
/***********************************
* 使用object关键字定义类(工厂模式)
***********************************/
function getCat(){
var obj = new Object();
obj.name = "miaomiao";
obj.color = "black";
obj.getName = function(){
console.log(this.name);
}
obj.getColor = function(){
console.log(this.color);
}
return obj;
}
var cat = getCat();
cat.getName();
cat.getColor();
console.log("---------------------------");
/***********************************
* 通过{}方式定义类(封装)
***********************************/
var Chicken = {
getChicken: function(){
var chicken = {};
chicken.name = "小鸡鸡";
chicken.getName = function(){
console.log(this.name);
}
return chicken;
}
}
chicken = Chicken.getChicken();
chicken.getName();
console.log("---------------------------");
/***********************************
* 直接定义获取对象
***********************************/
var duck = {
name:"小鸭子",
age:2,
getName: function(){
console.log(this.name);
}
}
duck.getName();
console.log("---------------------------");