面向对象二

面向对象基础(二)

  1. new 与 this 的关系
<script>
//用工厂方式构造对象

function createPerson(name, sex)    //构造函数
{
    //假想的系统内部工作流程
    //var this=new Object();
    
    this.name=name;
    this.sex=sex;
    
    this.showName=function ()
    {
        alert('我的名字叫:'+this.name);
    };
    this.showSex=function ()
    {
        alert('我是'+this.sex+'的');
    };
    
    //假想的系统内部工作流程
    //return this;
}

var p1=new createPerson('blue', '男');
var p2=new createPerson('leo', '女');

/*p1.showName();
p1.showSex();
p2.showName();
p2.showSex();*/

alert(p1.showName==p2.showName);
</script>
  1. 给数组添加求和方法
<script>
var arr1=new Array(12, 5, 8, 4);
var arr2=new Array(44,6,5,4,5,55,9);

//arr1.sum=function ()
Array.prototype.sum=function ()
{
    var result=0;
    var i=0;
    
    for(i=0;i<this.length;i++)
    {
        result+=this[i];
    }
    
    return result;
};

/*alert(arr1.sum());
alert(arr2.sum());*/

alert(arr1.sum==arr2.sum);
</script>
  1. prototype 与 CSS 的关联

css行内样式,等同于函数方法,给一个对象添加方法
class类选择器,等同于prototype,给一类元素添加方法
prototype 扩展系统对象的方法,数组,字符串添加方法
原型添加的方法,不会浪费资源,

  1. 类与对象(实例)的区别
    类 类似于蛋糕模子
    对象(实例) 产品类似于对象
  2. 构造函数与类的关联
  3. 混合法创建构造函数
<script>
function Person(name, sex)
{
    this.name=name;
    this.sex=sex;
}

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

Person.prototype.showSex=function ()
{
    alert(this.sex);
};

var p=new Person('blue', '男');

p.showName();
p.showSex();
</script>
  1. 原型优先级问题、delete 运算符
<script>
Array.prototype.a=12;

var arr=[1,2,3];

alert(arr.a);   //12

arr.a=5;

alert(arr.a);   //5

delete arr.a;

alert(arr.a);   //12
</script>
  1. 面向对象回顾
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容