如果原型被更改,这会影响当前实例吗

If a prototype is changed, will this affect current instances?

本文关键字:影响 实例 原型 如果      更新时间:2023-09-26

假设我有这个:

var _JS = function() {
  this.Constants = {
    True: 1,
    False: 0,
    Nil: null,
    Unknown: void(0),
  };
};
var JS = new _JS();

如果我后来更改它(使用_JS.prototype.etc添加方法),我可以在JS上调用这些方法吗?

是的,原型更改会影响您修改其原型的项目的所有实例。

参见简单原型修改示例:http://jsfiddle.net/JAAulde/56Wdw/1/

是。修改原型将修改所有实例。

一个简单的测试:

var f = function(){}
var g = new f()
f.prototype.trace = function(){alert(1)}
g.trace(); // alerts 1

如果原型被更改,这会影响当前实例吗?

是的。如果更改现有对象实例共享的原型,则所有对象实例的原型都将更改。

下面的代码会打印一些东西:

var ajs = new _JS();
_JS.prototype.do = function () {console.log('something');}
ajs.do();