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>

上一篇下一篇

猜你喜欢

热点阅读