35、面向对象

来源:互联网 发布:网络电视怎么看直播啊 编辑:程序博客网 时间:2024/06/05 15:56

1、面向对象: 所有的程序执行都从对象出发


对象拥有属性和方法

    1.所有的功能都从对象出发,已达到一个对象实现某种功能的效果
    2.面向对象支持扩展(继承)

面向过程 流程式的写法


构造一个简单的对象(有属性、有方法)

var obj1 = new Object();
obj1.name = 'yangshun';
obj1.showName = function(){
    alert( this.name );
};

var obj2 = new Object();
obj2.name = '脑残粉';
obj2.showName = function(){
    alert( this.name );
};



2、构造函数过程解析(构造函数的函数名第一个字母默认大写)


工厂模式   // 原料 -> 加工 -> 出厂

function Person( name ){
    var obj = new Object();
    obj.name = name;
    obj.showName = function(){
        alert( this.name );
    }
        return obj;
};
var obj1 = Person( 'onmyway' );
var obj2 = Person( '左缺' );
obj2.showName();


在函数执行前面加上new:
1.函数内部自然会产生一个对象,this指向这个对象
2.函数默认返回产生的这个对象

function Person( name ){
    //var obj = new Object();//直接省略,在函数执行前面加上new:.函数内部自然会产生一个对象,this指向这个对象
    this.name = name;
    this.showName = function(){
        alert( this.name );
};

//return obj;//直接省略,在函数执行前面加上new:函数默认返回产生的这个对象
};
var obj1 = new Person( 'onmyway' );
var obj2 = new Person( '左缺' );
obj2.showName();



3、构造函数原型:节省空间,共用属性只用分配一个地址存储

/*
原型: prototype
        只有构造函数有原型
        原型的方法里面的this指向的是执行的时候的对象


在写面向对象的时候:
        私有属性写在构造函数里面
        公共属性写在prototype里面

*/
function Person( name ){
    this.name = name;
};
Person.prototype.showName = function(){
    alert( this.name );
};
var obj1 = new Person( 'onmyway' );
var obj2 = new Person( '左缺' );
alert( obj2.showName == obj1.showName )//true


4、方法链

//类似于$('#wrap').css({}).click().animate()

function Person(name , age){
        this.name = name;
        this.age = age;
};
Person.prototype.showName = function(){
        console.log( this.name );
        return this;//返回this,让函数执行完后变为对象,方便起后面再接上多个函数继续执行
};
Person.prototype.showAge = function(){
        console.log( this.age );
        return this;//返回this,让函数执行完后变为对象,方便起后面再接上多个函数继续执行
};
var p1 = new Person( '阿飞' , '27' );
p1.showName().showAge();


0 1
原创粉丝点击