Nesnelerin prototiplerini başka bir nesneyle göstermenin bir yolu var mı? Bu kodda Nesnede prototip gösterme
var foo = function() {
var foo = {
bar: bar,
boo: boo
}
return foo;
function bar (age) {
this.age = age;
}
bar.prototype.shoutAge = function() {
alert('My age is ' + this.age);
}
function boo (age) {
this.age = age;
boo.prototype.shoutAge = function() {
alert('My age is ' + this.age);
}
}
}
var foo = foo();
var far = new foo.bar(13); // bar {age: 13}
far.shoutAge(); // far.shoutAge is not a function
var far = new foo.boo(13); // boo {age: 13} with __proto__
far.shoutAge(); // alert('My age is 13');
,
'bar' nesne prototip miras ile kurulur - ama açığa çubuğu
'shoutAge' mirasını kaybeder.
Ancak 'boo' nesne prototip bunun içinde bildirilen ve dış fonksiyon yöntemiyle 'shoutAge' erişimi vardır vardır.
Bu ikincisinin, işlev görse de en iyi uygulama olduğunu düşünmüyorum. Peki buradaki en iyi uygulama ne olurdu?
Ben potansiyel 'bar' örnekleri yüzlerce var, özellikle kendi 'shoutAge' yöntemidir olması 'bar' her örneğini istemiyoruz. Genellikle 'bar' için ayrı bir nesne 'foo'? Ben bar.prototype
atama kodunuzda asla çalıştırılmaz, çünkü bu olduğunu düşünüyorum
var Foo = function() {
function bar (age) {
this.age = age;
}
bar.prototype.shoutAge = function() {
alert('My age is ' + this.age);
}
var foo = {
bar: bar,
boo: boo
}
return foo;
}
: bu sadece bir emir-of-operasyonlar konudur gibi
Miras burada nerededir? Ne 'bar' ne de 'boo' birbirinden mi yoksa 'foo'yu miras almaz. –
'uzak' bar.prototype' veya 'boo.prototype' öğesinden devralır – Oriol
Programınızı yazdırmayı deneyin. –