面向对象 构造函数

			         面向对象

面向对象概念
对象:万物皆对象
1、属性: 特点、特征、特性 变量 名词
2、方法:功能 函数 动词
编程方式:过程化(面向过程编程) 面向对象编程

对象的创建
1、因为系统内置对象的个数是有限的,所以需要自定义对象
2、创建对象方法
1)字面量形式创建对象:
简单易懂,但不利于批量创建对象,无法解决对象的识别问题。
2)实例创建对象:
简单易懂,但不利于批量创建对象,无法解决对象的识别问题。
3)工厂模式创建对象:
可以批量创建对象,无法解决对象的识别问题。
4)构造函数创建对象:
能改批量创建对象,能解决对象识别问题,构造函数是最常用的一种方法
缺点:会为每一个对象新增方法,浪费内存
5)原型方式创建对象:
原型:是函数的一个属性(自身又是一个对象),原型中的内容对所有的对象实例都是共享的
对象实例属性:proto 指向对象的原型
console.log(p.protoPerson.prototype);
constructor:原型对象的构造器,指向构造函数自身
console.log(Person.prototype.constructor
Person);;

	只在原型中添加公有方法,很少添加属性
   6)混合模式创建对象:
	构造函数+原型			理想的创建对象的方案(重点掌握)
	缺点:属性和方法声明没有在一起,有割裂感 
   7)动态混合模式创建对象

四、命名空间
随着代码量的增大,会出现名称相同的变量,就可以使用命名空间来解决
//命名空间
var obj = {};
obj.offcn = {};
obj.miss = {};
obj.cts = {};

    obj.offcn.getInfo = function () {
        alert('a');
    };
    obj.miss.getInfo = function () {
        alert('b');
    };
    obj.cts.getInfo = function () {
        alert('c');
    };
    // obj.offcn.getInfo();
    obj.miss.getInfo();

五、apply和call
在ES5中,this指向的是调用者
apply和call方法可以改变函数内this的指向
apply(obj,参数列表)
参数列表:obj是一个对象,它将会替代函数内的this ;参数列表,函数自身的参数
call(obj,参数列表)
参数说明:obj是一个对象,它将会替代函数内的this ;参数列表,函数自身的参数

** 相同点:都能改变函数内this的指向
不同点:参数列表不同,apply需要将参数封装为数组传递,call方法普通传递**
    // show.call(document.body,20,30);
    // show.apply(document.body,[30,40]);

六、继承
1)原型链继承:
将父类的对象实例赋值子类的原型
查找的顺序,自己实例对象—>构造函数—>原型—>父类型的实例对象—>父类型构造函数—>父类型原型。由于此种继承是通过原型的关系完成的,又称为:原型链继承
问题:子类无法传递参数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值