javaScript之构造函数

构造函数

  • 1、构造函数要通过new来调用 this指向实例化对象
  • 2、约定俗成构造函数首字母大写
	function Person(name){
        this.name = name;
        this.age = 20;
        this.hobby = function(){
            console.log("喜欢美女");
        }
    }
    // new 实例化
    let zhangsan = new Person("小陈");
    console.log(zhangsan);
  • 3、静态属性及方法
    静态属性和方法,属于类本身的
	//静态成员
    Person.num = 0; //静态属性
    Person.fn = function(){   //静态方法
        console.log("fn");
    }
    Person.num++;
    console.log(Person.num)
  • 4、构造函数性能
    对象属性和方法比较,不仅值要一样想,内存也要一样。多个实例化对象,就会消耗内存
let zhangsan = new Person("小陈");
//hobby方法 开辟了新地址
let lisi = new Person("小王");
console.log(zhangsan.hobby === lisi.hobby);  //  false
  • 5、性能解决方法
    解决消耗内存的问题,js提供了一个公共空间:原型。
function Person(name){
    this.name = name;
    this.age = 20;
    //实例化时在内存中开辟新的空间
    // this.hobby = function(){
    //     console.log("喜欢美女");
    // }  
}
//功能空间原型
Person.prototype.hobby = function(){
    console.log("喜欢美女");
}
// 这样可以追加n个共有方法,m个实例化对象也不消耗内存
Person.prototype.fn = function(){
    console.log("fn");
}

工厂模式对比构造函数

  • 1.工厂模式没有解决对象识别的问题。即创建的所有实例都是Object类型。(不清楚是哪个对象的实例)

  • 2.工厂模式没有原型,占用内存

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值