questions - javascript programs




एक "वर्ग" बनाने के लिए आप किस शैली का उपयोग करते हैं? (5)

आपके पास भी पसंद है:

function Vector(x, y, z) {
  function length() {
    return Math.sqrt(x * x + ...);
  }
}

जो शायद दो उदाहरण के रूप में धीमा है, लेकिन यह जावा / सी # जैसा दिखता है और यह थोड़ा अधिक स्पष्ट है।

जावास्क्रिप्ट में कक्षा-समान व्यवहार प्राप्त करने के कुछ तरीके हैं, सबसे आम प्रोटोटाइप इस तरह आधारित हैं:

function Vector(x, y, x) {
    this.x = x;
    this.y = y;
    this.z = z;
    return this;
}

Vector.prototype.length = function () { return Math.sqrt(this.x * this.x ... ); }

और समापन आधारित दृष्टिकोण के समान

function Vector(x, y, z) {
    this.length = function() { return Math.sqrt(x * x + ...); }
}

विभिन्न कारणों से बाद में तेज़ होता है, लेकिन मैंने प्रोटोटाइप संस्करण को देखा है (और मैं अक्सर लिखता हूं) और अन्य लोगों के लिए उत्सुक था।


ठीक है, मेरे पास इस पर एक विशेषज्ञ राय नहीं है। मैं आम तौर पर क्लोजर आधारित दृष्टिकोण का उपयोग करना समाप्त करता हूं क्योंकि यह मैनेजर को कोड सरल बनाता है लेकिन, मैंने अपने आप को उन विधियों के लिए प्रोटोटाइप का प्रयोग कर लिया है जो कोड की लाइनों का भार है।


मैं इस के लिए जॉन रेसीज पुस्तकालय का उपयोग करने का एक बड़ा प्रशंसक हूं हल्के, सीधे-आगे, और आप पहले से ही जानते हैं कि यदि आप 'सामान्य' ऑब्जेक्ट-उन्मुख शैली से परिचित हैं, तो इसका उपयोग कैसे करें।


जावास्क्रिप्ट में कोई कक्षाएं नहीं हैं

वहाँ वस्तुएं हैं हालांकि जावास्क्रिप्ट में ऑब्जेक्ट बनाने के लिए आपको एक क्लास की आवश्यकता नहीं है। इसमें कंस्ट्रक्टर फ़ंक्शंस होते हैं, उदाहरण के लिए आप नए के साथ इन्हें जोड़ सकते हैं:

var james = new Person();

आप वर्ग के व्यवहार के साथ अनुकरण कर सकते हैं:

प्रोटोटाइप उदाहरण:

function Car (type) {
    this.type = type;
    this.color = "red";
}

Car.prototype.getInfo = function() {
    return this.color + ' ' + this.type + ' car';
};

वस्तु का शाब्दिक उदाहरण

var car = {
    type: "honda",
    color: "red",
    getInfo: function () {
        return this.color + ' ' + this.type + ' car';
    }
}

सौभाग्य से मैं प्रोटोटाइप । जेएस का इस्तेमाल करता हूं, जो कुछ अच्छे रैपर प्रदान करता है। तो आप यह कर सकते हैं:

var Person = Class.create({
    initialize: function(name) {
        this.name = name;
    },
    say: function(message) {
        return this.name + ': ' + message;
    }
});

Prototype.js दस्तावेज़ीकरण: वर्गों और विरासत को परिभाषित करना





javascript