JS原型方法编写错误记录

下面展示一些 内联代码片

function ChangeStyle(btnobj,divobj,json){
            this.btnobj = btnobj;
            this.divobj = divobj;
            this.json = json;
        }
            ChangeStyle.prototype.init = function () {
                var that = this;
                this.btnobj.onclick = function () {
                    for(var key in that.json){
                        that.divobj.style[key] = that.json[key];
                    }
                };
                
            }

在学习在构造函数原型对象中创建方法时: 我思考ChangeStyle.prototype为什么要再挑出来写在外面,为啥不直接在构造函数中用this.prototype呢?
在实验中 我写成了

function ChangeStyle(btnobj,divobj,json){
            this.btnobj = btnobj;
            this.divobj = divobj;
            this.json = json;
        
            this.prototype.init = function () {
                var that = this;
                this.btnobj.onclick = function () {
                    for(var key in that.json){
                        that.divobj.style[key] = that.json[key];
                    }
                };
                
         	}
       }

果不其然报错了,说init木的意义。
在我重思 构造函数实例化时想到:
当使用 new 操作符调用 Person() 的时候,实际上这里会先创建一个对象
然后让内部的 this 指向 instance 对象
接下来所有针对 this 的操作实际上操作的就是 instance

如果按照我这样写,这里的this就不是指向构造函数了 而是实例对象,而实例对象并没有prototype属性!
所以如果想在构造函数的原型对象中创建方法 那就只能挑出来写啦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值