1.封装一个类
2.子类继承父类
3.“非构造函数”继承
4.定义有“私有属性”,“静态属性”的类
1.封装一个类:
function Cat(name,color){
//可以改变的属性
this.name = name;
this.color = color;
}
//不会改变的属性
Cat.prototype.type = "猫科动物";
Cat.prototype.eat = function(){alert("吃老鼠")};
使用方法:
var cat1 = new Cat("大毛","黄色");
var cat2 = new Cat("二毛","黑色");
alert(cat1.type); // 猫科动物
cat1.eat(); // 吃老鼠
http://bluesd7.com/蓝影闪电的随笔/ContentId/76/Javascript-面向对象编程(一):封装
2.子类继承父类
function extend(Child, Parent) {
var F = function(){};
F.prototype = Parent.prototype;
Child.prototype = new F();
Child.prototype.constructor = Child;
Child.uber = Parent.prototype;
}
使用方法:
extend(Cat,Animal);
var cat1 = new Cat("大毛","黄色");
alert(cat1.species); // 动物
http://bluesd7.com/蓝影闪电的随笔/ContentId/77/Javascript面向对象编程(二):构造函数的继承
3.“非构造函数”继承
var Chinese = {
nation:'中国'
};
var Doctor ={
career:'医生'
}
//使用下面方法深拷贝继承
function deepCopy(p, c) {
var c = c || {};
for (var i in p) {
if (typeof p[i] === 'object') {
c[i] = (p[i].constructor === Array) ? [] : {};
deepCopy(p[i], c[i]);
} else {
c[i] = p[i];
}
}
return c;
}
使用方法:
var Doctor = deepCopy(Chinese);
Chinese.birthPlaces = ['北京','上海','香港'];
Doctor.birthPlaces.push('厦门');
alert(Doctor.birthPlaces); //北京, 上海, 香港, 厦门
alert(Chinese.birthPlaces); //北京, 上海, 香港
http://bluesd7.com/蓝影闪电的随笔/ContentId/79/Javascript面向对象编程(三):非构造函数的继承
4.定义有“私有属性”,“静态属性”的类
//父类
var Animal = {
createNew: function(){
var animal = {};
animal.sleep = function(){ alert("睡懒觉"); }; //父类的方法
return animal;
}
};
//子类
var Cat = {
sound : "喵喵喵", //静态属性,所有猫的实例共享
createNew: function(){
var sound = "喵喵喵"; //子类私有方法
var cat = Animal.createNew(); //子类继承父类
cat.name = "大毛"; //子类的公有属性
cat.makeSound = function(){ alert("喵喵喵"); }; //子类的公有方法
return cat;
}
};
使用方法:
var cat1 = Cat.createNew();
var cat2 = Cat.createNew();
cat1.sleep(); // 睡懒觉 公有方法
alert(cat1.sound); // undefined 私有方法
cat1.makeSound(); // 喵喵喵
cat2.changeSound("啦啦啦"); //修改了共享的数据,另一个实例对象也会受到影响。
cat1.makeSound(); // 啦啦啦
参考:http://bluesd7.com/蓝影闪电的随笔/ContentId/82/Javascript定义类(class)的三种方法
//判断函数clock是否存在,存在就执行
typeof clock === "function" ? clock() : false;
//获取url参数的方法
function getQueryVariable(variable)
{
var query = window.location.search.substring(1);
var vars = query.split("&");
for (var i=0;i<vars.length;i++) {
var pair = vars[i].split("=");
if(pair[0] == variable){return pair[1];}
}
return(false);
}
转载请注明出处: http://www.bluesd7.com/蓝影闪电的随笔/ContentId/80/JS常用方法