js面向对象
2018-03-28 本文已影响0人
知识分享share
<script>
//工厂模式
function createPerson(name,qq){
// 原料
var obj = new Object();
//加工
obj.name = name;
obj.qq = qq;
obj.showName = function(){
console.log('我的名字叫:'+this.name);
};
obj.showQQ = function(){
console.log("我qq号:"+this.qq);
};
obj.showName();
obj.showQQ();
//出厂
return obj;
}
//没有new,函数重复
var obj1 = createPerson("xiaomin",'134325145');
function createPerson(name,qq){
// 系统自己创建
// var this = new Object();
this.name = name;
this.qq = qq;
obj.showName = function(){
console.log('我的名字叫:'+this.name);
};
obj.showQQ = function(){
console.log("我qq号:"+this.qq);
};
this.showName();
this.showQQ();
//系统返回
// return this;
}
var obj2 = new createPerson("xiaonan",'32546575');
function createPerson(name,qq){
// 系统自己创建
// var this = new Object();
this.name = name;
this.qq = qq;
obj.showName = function(){
};
obj.showQQ = function(){
};
this.showName();
this.showQQ();
//系统返回
// return this;
}
createPerson.prototype.showName=function(){
console.log('我的名字叫:'+this.name);
}
createPerson.prototype.showQQ=function(){
console.log("我qq号:"+this.qq);
}
var obj2 = new createPerson("xiaonan",'32546575');
var arr1 = new Array(12,324,435,23);
var arr2 = new Array(12,324,23);
Array.prototype.sum =function()//class
// arr1.sum = function()//行间样式
{
var result = 0;
for(var i =0;i<this.length;i++){
return +=this[i];
}
return result;
}
console.log(arr1.sum());
console.log(arr2.sum());
类 模子
对象 产品
css类比
class 一样
行间 不同
用构造函数加属性
用原型加方法
面向对象只关注提供的方法,不关注内部实现
function A(){
this.a=0;
alert(this);
}
//属性继承
function B(){
// this = new B()
A.call(this);
}
//方法继承避免引用
for(var i in A.prototype){
B.prototype[i] = A.prototype[i];
}
B.prototype.fn=function(){}
var obj = new B();
</script>