您的位置:首页 > Web前端 > JavaScript

js面向对象基础

2016-02-29 11:34 525 查看

工厂模式

function CreatePerson (name1,age1) {
//创建对象
var obj=new Object();

//属性
obj.name=name1;
obj.age=age1;

//方法
obj.showName=function () {
alert(this.name);

}
obj.showAge=function () {
alert(this.age);

}
//对象的出厂
return obj;
}
var person1=CreatePerson('张三',22);
var person2=CreatePerson('李四',23);

person1.showName();

alert(person1.showName==person2.showName)//返回false;说明会占用大量资源;因此不使用。


混合模式(原型模式 + 构造函数模式)

//构造函数第一个字母习惯大写;
function CreatePerson (name1,age1) {

this.name=name1;
this.age=age1;

}
//prototype大概相当于css样式里的class;
CreatePerson.prototype.showName=function () {
alert(this.name);

}

CreatePerson.prototype.showAge=function () {
alert(this.age);

}

var person1=new CreatePerson('王五','25');
var person2=new CreatePerson('陆六','29');

person1.showName();
person2.showAge();

alert(person1.showName==person2.showName) //返回true,调用的方法一样,不会浪费资源。因此大部分使用它。


js继承

function A (name1) {
this.name=name1;
}

A.prototype.showName=function () {
alert(this.name);

}

var obj1=new A('shanks');
//obj1.showName();
//alert(obj1.name);

function B (name2,age2) {
A.call(this,name2);//属性继承
this.age=age2;
}

B.prototype.showAge=function () {

alert(this.age);
}

//方法继承
for(var i in A.prototype){
B.prototype[i]=A.prototype[i];
}

var obj2=new B('shanks2','33');
//alert(obj2.name);

obj2.showName();
obj2.showAge();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  面向对象