JavaScript referans ile geçmek için mi?
JavaScript başvuruları geçmek veya değerleri tarafından geçmek için mi? İşte bir örnekJavascript: İyi Parçaları. Dikdörtgen işlevi için my
parametre hakkında kafam çok karışık. Aslında undefined
, ve işlevin içinde yeniden tanımlandı. Orijinal referans yok. Ben fonksiyonu parametre çıkarmak, içine alan işlevini erişmek mümkün değil.
Bir kapatma mı? Ama hiçbir işlevi döndürdü.
var shape = function (config) {
var that = {};
that.name = config.name || "";
that.area = function () {
return 0;
};
return that;
};
var rectangle = function (config, my) {
my = my || {};
my.l = config.length || 1;
my.w = config.width || 1;
var that = shape(config);
that.area = function () {
return my.l * my.w;
};
return that;
};
myShape = shape({
name: "Unhnown"
});
myRec = rectangle({
name: "Rectangle",
length: 4,
width: 6
});
console.log(myShape.name " area is " myShape.area() " " myRec.name " area is " myRec.area());
CEVAP
İlkel değer geçirilir, Nesne geçti "bir referans kopya".
Bir nesne geçirdiğinizde özellikle (ya da dizi) (görünmez) o nesne için bir başvuru geçirmeden, ve değiştirmek içiniçindekilerbu nesne, ama eğer başvuru üzerine çalışırsanız başvurusu arayan tarafından düzenlenen - yani değeri tarafından geçirilen kendisi referans kopyasını etkilemez:
function replace(ref) {
ref = {}; // this code does _not_ affect the object passed
}
function update(ref) {
ref.key = 'newvalue'; // this code _does_ affect the _contents_ of the object
}
var a = { key: 'value' };
replace(a); // a still has its original value - it's unmodfied
update(a); // the _contents_ of 'a' are changed
Bir başvuru türü değişen tamamen nesne arayan tarafından iletilen yerini aldığı: C ile karşılaştırın
void replace(mytype& ref) {
ref = *new mytype(); // ignoring the memory leak for the purposes of this example
}
mytype a;
replace(a); // a is now a _different_ object
Nasıl Düzenli İfade, JavaScript için b...
Nasıl PHP değişkenler ve veri JavaScri...
Nasıl PHP için JavaScript değişkenleri...
Href JavaScript bağlantıları için özni...
Nasıl bir JavaScript nesnesinin bir öz...