Hangi yöne javascript bir nesne oluşturmak için en iyisidir? &nesne değişkeni önce quot;var" gerekli mi?
Şimdiye kadar JavaScript ile bir nesne oluşturmak için üç yolu gördüm, hangi yolun daha iyi bir nesne yaratmak için ve neden?
Ben de tüm bu örnekler, o "var", neden mal? önce kullanılmaz anahtar gördüm ""Özellikleri değişkenler olduğundan bahsetmişti. gibi bir özelliğin adını daha önce var bildirmek gerekmez mi
Bir şey daha sormayı unuttum:
Way2 ve way3 nesne adı büyük olduğu bir nesne adı için kullanmalıyız nesnenin adını daha düşük olduğu içinde way1...?
yolu 1
function person(fname,lname,age,eyecolor)
{
this.firstname=fname;
this.lastname=lname;
this.age=age;
this.eyecolor=eyecolor;
}
myFather=new person("John","Doe",50,"blue");
document.write(myFather.firstname " is " myFather.age " years old.");
2
var Robot =
{
metal: "Titanium",
killAllHumans: function()
{
alert("Exterminate!");
}
};
Robot.killAllHumans();
yol 3 (JavaScript nesneleri dizi sözdizimi kullanarak):
var NewObject = {};
NewObject['property1'] = value;
NewObject['property2'] = value;
NewObject['method'] = function(){ /* function code here */ }
CEVAP
Yokiyiyol, duruma göre değişir.
- Kullanınyolu 1birden fazla benzer nesneleri oluşturmak istiyorsanız. Örnek,
Person
(büyük harfle adını başlatmak gerekir) deniryapıcı işlevi. Bu benzersınıflarOO diğer dillerde. - Kullanın2eğer sadece gerekiyorsabir nesnebir tür (tekil). Eğer başka birinden miras nesne istiyorsanız, o zaman yapıcı bir işlev olsa da kullanmak zorunda.
- Kullanın3eğer nesnenin özelliklerini diğer özelliklerini bağlı olarak başlatmak istiyorsan eğer dinamik özellik adları varsa.
Güncelleme:Üçüncü yol için örnek istedi.
Bağımlı özellikleri:
Aşağıdaki this
gibi çalışmıyordeğilbook
bakın. Bir nesne değişmezi diğer özelliklerinin değerleri ile bir özellik başlatmak için bir yolu yoktur
var book = {
price: somePrice * discount,
pages: 500,
pricePerPage: this.price / this.pages
};
bunun yerine, olabilir.
var book = {
price: somePrice * discount,
pages: 500
};
book.pricePerPage = book.price / book.pages;
// or book['pricePerPage'] = book.price / book.pages;
Dinamik özellik adları:
Eğer özellik adı bazı değişken depolanan veya bazı ifade ile oluşturulur, sonra köşeli parantez açıklaması kullanarak vardır:
var name = 'propertyName';
// the property will be `name`, not `propertyName`
var obj = {
name: 42
};
// same here
obj.name = 42;
// this works, it will set `propertyName`
obj[name] = 42;
Javascript "" kontrol nesne ...
Nasıl "düzgün" JavaScript öz...
Nasıl "bu" JavaScript bir ne...
Bir yöntem gibi " var mı JavaScrip...
Bir döngü içinde nesne harfleri bir di...