请运行以下代码段 1 ,看看JS控制台中发生了什么:
我的问题是关于代码段中的最后一行:
F.prototype.method;
已更改?Fcustom.prototype.method
以便不更改F.prototype.method
? 注意:我正在使用jQuery和下划线来扩展该功能。
1 测试代码段:
var F = function () {};
F.prototype.method = function () {
// some code
}
F.prototype.method; // it shows "some code"
Fcustom = $.extend(true, F, {});
_.extend(Fcustom.prototype, {
method: function () {
// other code
}
});
Fcustom.prototype.method; // it shows "other code"
F.prototype.method; // it shows "other code" instead of "some code" Why?
答案 0 :(得分:3)
var obj = { myMethod : function() {
//some code
}
};
var newObj = $.extend(true, {}, obj);
newObj.myMethod = function (){
//new method
};
newObj.myMethod(); //should call the new method
虽然
obj.myMethod(); //still calls the old "//some code"
DEMO: