gpt4 book ai didi

javascript - 扩展现有的对象方法

转载 作者:行者123 更新时间:2023-11-29 10:59:31 24 4
gpt4 key购买 nike

我有一个对象:

MyObj = new Class.create();
MyObj.prototype = {
initialize: function () {
this.myArg = null;
},

setArg: function(arg) {
this.myArg = arg;

},

showArg: function () {
alert(this.myArg);
}
};

var x = new MyObj();
x.setArg('Something');
x.showArg();

x.setArg = function(arg) {
//how to call here the original??
alert('Here is my custom code')
}

它是在我无法覆盖的代码中创建的。

我想做的是像这样扩展这个现有对象:

x.setArg = function(arg) {
this.myArg = arg + ' a new cake';
}

我只是不想复制原来的代码。

更新:

我与原型(prototype)无关。该对象已创建。

最佳答案

这里有两个选择

选项一

只覆盖方法

var MyObj = function(){};
MyObj.prototype = {
initialize: function () {
this.myArg = null;
},

setArg: function(arg) {
this.myArg = arg;

},

showArg: function () {
alert(this.myArg);
}
};

var oldMethod = MyObj.prototype.setArg;
MyObj.prototype.setArg = function(arg) {
oldMethod.call(this,arg)
console.log(arg)
}


var x = new MyObj();
x.setArg('Something');
x.showArg();

方案二

扩展对象然后覆盖你想要的任何方法

var MyObj = function(){};
MyObj.prototype = {
initialize: function () {
this.myArg = null;
},

setArg: function(arg) {
this.myArg = arg;

},

showArg: function () {
alert(this.myArg);
}
};


var MyNewObject = function() {
}

MyNewObject.prototype = new MyObj()
MyNewObject.prototype.setArg = function(arg) {
MyObj.prototype.setArg.call(this,arg)
console.log(arg)
}


var x = new MyNewObject();
x.setArg('Something');
x.showArg();

关于javascript - 扩展现有的对象方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49981592/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com