2016-04-05 23 views
1

Benim kod uzanan hata aşağıdaki gibidir: Ben SpecificExampleExample uzanır istiyorumJavaScript - nesne

function Example(){} 
Example.myMethod = function(){}; 
function SpecificExample(){} 
SpecificExample.prototype = Object.create(Example.prototype); 
SpecificExample.prototype.constructor = SpecificExample; 

. Bu kod neden çalışmıyor?

+2

'Example.myMethod = fonksiyonu() {};' Yapıcınızda bağlı bir fonksiyon, bir prototip yöntem olup, 'Örnek kullanmaktır. prototype.myMethod = function() {}; ' – somethinghere

cevap

2

Example.myMethod, yapıcı işlev/nesneye bağlı bir işlevdir, ancak prototipinin bir parçası değildir. Bu statik bir işlev olarak adlandırılabilir (ve ES6'da tam olarak böyle). prototip kendisi eklemek, onlara prototip bir kısmını yapmak için:

function Example(){} 
Example.prototype.myMethod = function(){}; 
function SpecificExample(){} 
SpecificExample.prototype = Object.create(Example.prototype); 
// As @JaredSmith said, you shouldn't change the constructor, and why would you? 
// function SpecificExample(){} IS your constructor. So... 
// SpecificExample.prototype.constructor = SpecificExample; 
// should simply be removed. 
+0

Teknik olarak, * yapabilirsin, ama gerçekten yapmamalısın .... –

+0

@JaredSmith Teknik olarak pek çok şey mümkün, ama evet Doğru, doğru ol. Bunu değiştirmeme izin ver. – somethinghere

+0

Çok teşekkürler, statik bir yöntem olduğunu biliyorum (buna ihtiyacım var), sorun yapıcıyı değiştiremediğimdi. @JaredSmith performans sorunları gibi bir şey var mı? – Joy

İlgili konular