私はjavascriptプロトタイプの周りを頭で覆いたいと思っていて、オブジェクトに定義されているインスタンスメソッドを削除/定義解除する方法があるかどうか疑問に思っていましたので、プロトタイプのメソッドが呼び出されます。そうで次プロトタイプで定義されたメソッドを明らかにするためにインスタンスメソッドを「定義解除する」方法はありますか?
/* javascript */
function Foo() {};
Foo.prototype.myMethod = function() {alert('foo')};
var foo1 = new Foo();
var foo2 = new Foo();
foo1.myMethod = function() {alert('foo changed for instance')};
Foo.prototype.myMethod = function() {alert('foo changed in prototype')};
foo1.myMethod(); // alerts 'foo changed for instance'
foo2.myMethod(); // alerts 'foo changed in prototype'
foo1.myMethod();
を呼び出すと、「プロトタイプに変更foo」というプロトタイプと警告で定義されたメソッドを呼び出しますように、インスタンスfoo1
からmyMethod
を削除する方法はありますか?
私はRubyでシングルトンクラスからメソッドを削除するに似て何かをした後、同じようだと思います:
# ruby
class Foo
def myMethod
puts "foo"
end
end
f = Foo.new
f.myMethod # => foo
# make singleton class, re-define myMethod for this instance
def f.myMethod
puts "bar"
end
f.myMethod # => bar
# remove method from singleton class
class << f
remove_method :myMethod
end
f.myMethod # => foo
私は全くの関心の外に求めているので、このための実用的なユースケースのためのボーナスポイント。 。あなたがdelete
でそうすることができる
がhttp://perfectionkills.com/understanding-delete/ –
@paoloおかげで、素晴らしい記事 –