面向对象1 构造方法

对象:黑盒子,不知道内部构造,但会使用表面的功能

面向对象的特点

  • 抽象:抽出我们关心的特点
  • 封装:黑盒子,不知道内部构造,但会使用表面的功能
  • 继承:继承父类所有特点,又有自己的特点
    1. 多重继承
    2. 多态

变量/属性 函数/方法

  • 变量的自由的,属性是有主的(对象的)
  • 函数是自由的,方法是有主的(对象的)

this:当前的方法属于谁(当前发生事件的对象)

工厂模式的缺点(构造函数)

  1. 没有new
  2. 同样的方法没有共享,导致占用内存,showName是同样的方法,不需要重复初始化
function createPerson(name){
    //原料
    var p = new Object();
    //加工
    p.name = name;
    
    p.showName = function(){
        return this.name;
    }
    //出厂
    return obj;
}

改1

解决new 但是方法还是没有共享

// 类名首字母大写
function CreatePerson2(name){
    //系统偷偷为我们创建
    //var this = new Object();
    this.name = name;

    this.showName = function(){
        return this.name;
    }
    //系统偷偷为我们出厂
    //return this;
}

var jack = new createPerson2("jack");
var dav = new createPerson2("dav");
alert(jack.showName == dav.showName);  // false

类和对象

类: 模子 Array
对象:产品(成品) arr

原型 prototype

css中的class:一次给一组元素加上样式 --->js的原型
行间样式: 一次给一个元素加上样式 --->js给对象加东西

改2 混合方式

  • 构造函数加属性
  • 原型加方法
  • 类名首字母大写
function CreatePerson3(name){
    this.name = name;
}
//为类加一个共通方法 实现方法的共享
CreatePerson3.prototype.showName = function(){
    return this.name;
}
var jack = new CreatePerson3("jack");
var dav = new CreatePerson3("dav");
alert(jack.showName == dav.showName);  // true
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容