构造函数方法与原型链方法的区别

本文探讨了JavaScript ES5中构造函数与原型的区别。在创建实例后,构造函数内的方法会为每个实例占用独立的内存空间,而原型上的方法则被所有实例共享,节省内存。当修改构造函数内的方法时,不会影响其他实例,但改变原型方法会影响到所有实例。通过示例展示了这两种方式在实例化和方法重写时的行为差异。
摘要由CSDN通过智能技术生成

ES5的解释

  1. 在new一个实例之后,他的实例可以调用构造函数和prototype上面的方法。
  2. 但是不同的是,定义在构造函数里面的方法,会在每一个实例里面创建一个函数,占用空间。每个实例的test方法指向不同内存。而prototype中的方法,只占用一块内存,所有实例指向他,节约空间。
    function Cat(x,y) {
        this.test1 = () => {
            console.log("我是1");
        }
    }

    Cat.prototype.test2 = () => {
        console.log("我是2");
    }
    var car = new Cat()
    console.log(car.test1());//我是1
    console.log(car.test2());//我是2
	console.log(car1.test1 == car.test1);//false

  1. 构造函数里面的方法,重写之后不会改变其他实例。而定义在prototype上,所有实例共享这个方法,所以改变prototype的方法之后,所有实例的方法都改变了。
    function Cat(x,y) {
        this.test1 = () => {
            console.log("我是1");
        }
    }
    var car = new Cat()
    var car1 = new Cat()
    car1.test1 = ()=>{
        console.log("我才不是1呢");
    }
    console.log(car.test1());//我是1
    console.log(car1.test1());//我才不是1呢
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值