实例对象的原型对象的改变及添加方法

在js中我们通过自定义方法来创建对象时,或者其他情况,都会遇到几个对象有共同的方法,但是在浏览器的解析中虽然方法时同样的,但不是同一个,就会占用内存,所以为了数据共享,不浪费空间,我们通过原型来添加方法,对象的一个属性prototype同样它也是一个对象。

function Person(name, age) {
        this.name = name;
        this.age = age;
    }
    //通过原型来添加方法
    Person.prototype.eat = function () {
        console.log("吃烤鱼")
    }

这是实例对象所访问的eat方法就是共享的,同一个eat,不占用多余的空间。
关于原型的改变
上面添加了原型方法,接下来我们试着去改变
在后边加上改变的代码

function Person(name, age) {
        this.name = name;
        this.age = age;
    }
    //通过原型来添加方法
    Person.prototype.eat = function () {
        console.log("吃烤鱼");
    }
Person.prototype = {
        play: function () {
            console.log(this)
        }
    }
    var per = new Person();
    per.eat();//报错
    per.play();

这时打开网页,它会报错

Uncaught TypeError: per.eat is not a function

很简单,在原型改变后再去添加方法就不会错了

function Person(name, age) {
        this.name = name;
        this.age = age;
    }
    Person.prototype = {
        play: function () {
            console.log(this)
        }
    }
    Person.prototype.eat = function () {
        console.log("吃烤鱼");
    }
    var per = new Person();
    per.eat();//不报错  等会解释
    per.play();
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值