ஜாவாஉரைநிரல் பயிற்சிவழிகாட்டி தொடர்-18. பொருட்களுடன் பணிபுரிதல்.2

Object.create எனும் வழிமுறையைப் பயன்படுத்துதல்
Object.create() எனும் வழிமுறையைப் பயன்படுத்தியும் பொருட்களை உருவாக்கலாம். இந்த வழிமுறை மிகவும் பயனுள்ளதாக இருக்கும், ஏனென்றால் இது ஒரு கட்டமைப்பாளர் எனும் செயலியை வரையறுக்காமல் நாம்உருவாக்க விரும்பும் பொருளின் முன்மாதிரி பொருளைத் தேர்வுசெய்ய இது நம்மை அனுமதிக்கிறது, .
// விலங்குகளின் பண்பியல்புகளும் இணைத்தல் வழிமுறையும்
const Animal = {
type: ‘Invertebrates’, // பண்புகளின் இயல்புநிலை மதிப்பு
displayType: function() { // விலங்கின் வகையைக் காண்பிக்கும் வழிமுறை
console.log(this.type);
}
};
// animal1 எனப்படும் புதிய விலங்கின் வகையை உருவாக்கிடுக
const animal1 = Object.create(Animal);
animal1.displayType(); // வெளியீடு: Invertebrates
// மீன் எனப்படும் புதிய விலங்கின் வகையை உருவாக்கிடுக
const fish = Object.create(Animal);
fish.type = ‘Fishes’;
fish.displayType(); // வெளியீடு: Fishes
மரபுரிமை ஜாவாஉரைநிரலில் உள்ள அனைத்து பொருட்களும் குறைந்தது ஒரு பொருளில் இருந்தே பெறுகின்றன. மரபுரிமையாகப் பெறப்படும் பொருளானது முன்மாதிரி என்று அழைக்கப்படுகிறது, மேலும் மரபுவழி பண்பியல்புகளை கட்டமைப்பாளரின் முன்மாதிரி பொருளில் காணலாம்.
பொருளின் பண்பியல்புகளை அட்டவணைப்படுத்துதல், ஒரு பொருளின் பண்பினை அதனுடைய பண்பின் பெயர் அல்லது வரிசைமுறையிலான அட்டவணைப் படுத்துதலின் மூலம் குறிப்பிடலாம். நாம் துவக்கத்தில் ஒரு பண்பினை அதன் பெயரால் வரையறுத்தால், எப்போதும் அதை அதன் பெயரால் குறிப்பிட வேண்டும், மேலும் துவக்கத்தில் ஒரு சுட்டியின் மூலம் ஒரு பண்பினை வரையறுத்தால், எப்போதும் அதை அதன் சுட்டியால் குறிப்பிட வேண்டும். ஒரு பொருளையும் அதன் பண்புகளையும் constructor எனும் செயலியின் மூலம் உருவாக்கும்போது (Carobject எனும் வகையுடன் முன்பு செய்தது போல) , தனிப்பட்ட பண்புகளை வெளிப்படையாக வரைய றுக்கும் போது (எடுத்துக்காட்டாக,myCar.color = ‘red’) இந்தக் கட்டுப்பாடு பொருந்தும். நாம் துவக்கத்தில், myCar[5] = ’25 mpg’ போன்ற சுட்டியுடன் ஒரு பொருளின் பண்பினை வரையறுத்தால், பின்னர் நாம் அந்த பண்பினை myCar[5] என்று மட்டுமே குறிப்பிடவேண்டும். இந்த விதிக்கு விதிவிலக்கு HTML இலிருந்து பிரதிபலிக்கும் வரிசை போன்ற பொருட்கள், அதாவது document.forms array-like object. என்பதாகும்
இந்த அணிவரிசை போன்ற பொருட்களில் உள்ள பொருட்களை அவற்றின் வரிசை முறைப்படியான எண்களின் (ஆவணத்தில் அவை தோன்றும் இடத்தின் அடிப்படையில்) அல்லது அவற்றின் பெயரின் (வரையறுக்கப்பட்டிருந்தால்) மூலம் நாம் எப்போதும் குறிப்பிடலாம். எடுத்துக்காட்டாக, ஒரு ஆவணத்தில் உள்ள இரண்டாவதாக எனும் குறிச்சொல்லில் ஒரு name=”myForm” எனும் பண்பு இருந்தால், படிவத்தை document.forms[1]ordocument.forms[‘myForm’] அல்லது document.forms.myForm எனக் குறிப்பிடலாம்.
ஒரு பொருளின் வகைக்கான பண்புகளை வரையறுத்தல், முன்மாதிரிப் பண்புகளைப் பயன்படுத்தி, முன்னர் வரையறுக்கப்பட்ட பொருள் வகைக்கு ஒரு பண்பினைச் சேர்க்கலாம். இது பொருளின் ஒரு நிகழ்வால் அல்லாமல், குறிப்பிட்ட வகையின் அனைத்து பொருட்களாலும் பகிரப்படும் ஒரு பண்பினை வரையறுக்கிறது. பின்வரும் குறிமுறைவரிகள் காரின் வகையின் அனைத்துப் பொருட்களுக்கும் வண்ணப் பண்புகளைச் சேர்க்கிறது, பின்னர் objectcar1 இன் வண்ணப் பண்பிற்கு மதிப்பை வழங்குகிறது.
.Car.prototype.color = null;
car1.color = ‘black’;
வழிமுறைகளை வரையறுத்தல் ஒரு வழிமுறை என்பது ஒரு பொருளுடன் தொடர்புடைய ஒரு செயலி, அல்லது, வேறுவிதமாகக் கூறவேண்டுமெனில், ஒரு வழிமுறை என்பது ஒரு பொருளின் பண்பு ஆகும். ஒரு பொருளின் பண்பு ஒதுக்கப்பட வேண்டுமே தவிர, இயல்பான செயலிகள் வரையறுக்கப்படும் விதத்தில் வழிமுறைகள் வரையறுக்கப்படுவதில்லை. . ஒரு எடுத்துக்காட்டு:

objectName.methodName = functionName;
const myObj = {
myMethod: function(params) {
// …எதையாவது செய்தல்
},
// இதையும்கூட செய்தல்!
myOtherMethod(params) {
// …வேறு எதையாவது செய்தல்
}
};

objectName என்பது ஏற்கனவே உள்ள பொருளாக இருந்தால், வழிமுறையின் பெயர் வழி முறைக்கு ஒதுக்கும் பெயர்ஆகும், functionName என்பது செயலியின் பெயர்ஆகும். பொருளின் சூழலில் வழிமுறையை பின்வருமாறு அழைக்கலாம்:
object.methodName(params);
object constructor எனும் செயலியில் ஒரு வழிமுறையின் வரையறையைச் சேர்ப்பதன் மூலம் ஒரு பொருளின் வகைக்கான வழிமுறைகளை வரையறுக்கலாம். முன்பு வரையறுக்கப்பட்ட கார் எனும் பொருட்களின் பண்பியல்புகளை வடிவமைத்து காண்பிக்கும் செயலியை வரையறுக்கலாம்; எடுத்துக்காட்டாக,
function displayCar() {
const result = A Beautiful ${this.year} ${this.make} ${this.model};
prettyPrint(result);
}
இதில் prettyPrint என்பது ஒரு கிடைமட்ட விதியையும் ஒரு சரத்தையும் காண்பிக்கின்றம் ஒரு செயலியாகும். இந்த வழிமுறையைப் பயன்படுத்துவதைக் கவனித்திடுக. கூற்றினைச் சேர்ப்பதன் மூலம் இந்தச் செயலியைபொருளின் வரையறைக்குக் காரின் வழிமுறையாக மாற்றலாம் this.displayCar = displayCar; . எனவே, காரின் முழு வரையறை இப்போது பின்வருவதைபோன்று இருக்கும்
function Car(make, model, year, owner) {
this.make = make;
this.model = model;
this.year = year;
this.owner = owner;
this.displayCar = displayCar;
}
ஒவ்வொரு பொருளுக்கும் displayCar எனும் முறையைப் பின்வருமாறு அழைக்கலாம்:
பொருள் குறிப்புகளுக்கு இதைப் பயன்படுத்துதல் ஜாவாஉரைநிரலில் ஒரு சிறப்புத் திறவுச்சொல்லைக் கொண்டுள்ளது, இது, தற்போதைய பொருளைக் குறிப்பிடுவதற்கு ஒரு வழிமுறைக்குள் பயன்படுத்தலாம். எடுத்துக்காட்டாக, நம்மிடம் 2 பொருட்கள் உள்ளன, மேலாளர் ,பயிற்சியாளர். ஆகிய ஒவ்வொரு பொருளுக்கும் அதன் சொந்த பெயர், வயது, வேலை ஆகியவை உள்ளது. Hi() என்ற செயலியில், this.name எனஇருப்பதைக் கவனித்திடுக. 2 பொருள்களுடன் சேர்க்கப்படும் போது அவை ‘Hello, My name is’ என்று அழைத்து அச்சிடலாம், பின்னர் கீழே காட்டப்பட்டுள்ளது போன்றுஅந்த குறிப்பிட்ட பொருளின் பெயர் மதிப்பைச் சேர்க்கிறது..
const Manager = {
name: “John”,
age: 27,
job: “Software Engineer”
}
const Intern = {
name: “Ben”,
age: 21,
job: “Software Engineer Intern”
}
function sayHi() {
console.log(Hello, my name is ${this.name})
}
// add sayHi function to both objects
Manager.sayHi = sayHi;
Intern.sayHi = sayHi;
Manager.sayHi(); // Hello, my name is John’
Intern.sayHi(); // Hello, my name is Ben’
Thethisrefers to the object that it is in. You can create a new function calledhowOldAmI()which logs a sentence saying how old the person is.
function howOldAmI() {
console.log(I am ${this.age} years old.);
}
Manager.howOldAmI = howOldAmI;
Manager.howOldAmI(); // I am 27 years old.
பெறுபவர்களையும்(getters), அமைப்பாளர்களை(setters) யும்வரையறுத்தல்

ஒரு குறிப்பிட்டபண்பியில்பின் மதிப்பைப் பெறும் ஒரு வழிமுறையாகும். setter என்பது ஒரு குறிப்பிட்ட பண்பின் மதிப்பை அமைக்கும் ஒரு வழிமுறையாகும். புதிய பண்புகளைச் சேர்ப்பதை ஆதரிக்கும் எந்தவொரு முன்கூட்டியே வரையறுக்கப்பட்ட முக்கிய பொருள் அல்லது பயனாளர் வரையறுக்கப்பட்ட பொருளின் பெறுபவர்களையும் அமைப்பாளர்களையும் வரையறுக்கலாம். பெறுபவர்களாக அமைப்பாளர்களாக இருக்கலாம்
• பொருள் துவக்கிகளைப் பயன்படுத்தி வரையறுக்கப்படுகிறது, அல்லது
• பெறுபவர் அல்லது அமைப்பாளர் சேர்க்கும் வழிமுறையைப் பயன்படுத்தி எந்த நேரத்திலும் எந்தவொரு பொருளிலும் பின்னர் சேர்க்கப்படும்.
பொருள் துவக்கிகளைப் பயன்படுத்தி பெறுபவர்கள் அமைப்பாளர்களை வரையறுக்கும் போது, செய்ய வேண்டியது get உடன் கெட்டர் முறையை முன்னொட்டு மற்றும் செட் உடன் செட்டர் முறை. நிச்சயமாக, getter எனும் வழிமுறை ஒரு அளவுருவை எதிர்பார்க்கக்கூடாது, அதே சமயம் setter எனும் வழிமுறை சரியாக ஒரு அளவுருவை (அமைக்க வேண்டிய புதிய மதிப்பு) எதிர்பார்க்கிறது. எடுத்துக்காட்டாக:
const o = {
a: 7,
get b() {
return this.a + 1;
},
set c(x) {
this.a = x / 2;
}
};
console.log(o.a); // 7
console.log(o.b); // 8 <– At this point the get b() method is initiated.
o.c = 50; // <– At this point the set c(x) method is initiated
console.log(o.a); // 25
பொருளின் பண்புகள்:
• o.a- ஒரு எண்
• o.b- திரும்பப் பெறும் ஒரு பெறுநர். Aplus 1
• o.c— மதிப்பை அமைக்கும் மதிப்பை அமைக்கும் ஒரு அமைப்பாளர்.
“[gs]etproperty()” ஐப் பயன்படுத்தி ஒரு பொருளில் வரையறுக்கப்பட்ட பெறுபவர்கள் , அமைப்பாளர்களின் செயலியின் பெயர்கள், [gs]et propertyName(){ } தொடக்கவியல் நம்மை தவறாக வழிநடத்தினாலும், பெறுபவர்களின் பெயர்கள் அன்று என்பதை நினைவில் கொள்க. வேறுவிதமாக கூட கருதலாம்.
Object.define Properties() எனும் வழிமுறையைப் பயன்படுத்தி உருவாக்கிய பிறகு எந்த நேரத்திலும் ஒரு பொருளில் பெறுபவர்கள் அமைப்பாளர்கள் சேர்க்கலாம். இந்த வழிமுறையின் முதல் அளவுரு, பெறுபவர் அல்லது அமைப்பாளரை வரையறுக்க விரும்பும் பொருளாகும். இரண்டாவது அளவுரு என்பது ஒரு பொருளாகும், அதன் பண்பியில்பின் பெயர்கள் பெறுபவர் அல்லதுஅமைப்பாளர் பெயர்கள், அதன் பண்பியல்பின் மதிப்புகள் பெறுபவர் அல்லது அமைப்பாளர் செயலிகளை வரையறுக்கும் பொருள்கள். முந்தைய எடுத்துக்காட்டில் பயன்படுத்தப்பட்ட அதே gette ,setterஐவரையறுக்கின்ற ஒரு எடுத்துக்காட்டு:
const o = { a: 0 };
Object.defineProperties(o, {
‘b’: { get: function() { return this.a + 1; } },
‘c’: { set: function(x) { this.a = x / 2; } }
});
o.c = 10; // Runs the setter, which assigns 10 / 2 (5) to the ‘a’ property
console.log(o.b); // Runs the getter, which yields a + 1 or 6
இரண்டு படிவங்களில் எதை தேர்வு செய்வது என்பது நம்முடைய நிரலாக்க பாணி யையும் கையில் இருக்கும் பணியையும் பொறுத்ததாகும். ஒரு முன்மாதிரியை வரையறுக்கும் போது ஏற்கனவே பொருளின் துவக்கிக்கு சென்றால், பெரும்பாலும் முதல் படிவத்தை தேர்வு செய்யலாம். இந்த வடிவம் மிகவும் கச்சிதமானது இயற்கையானது. இருப்பினும், பின்னர் பெறுபவர்களையும் அமைப்பாளர்களையும் சேர்க்க வேண்டும் எனில் -முன்மாதிரி அல்லது குறிப்பிட்ட பொருளை எழுதாததால் – இரண்டாவது படிவம் மட்டுமே சாத்தியமான படிவமாகும். இரண்டாவது வடிவம் ஜாவாஉரைநிரலின் மாறும் தன்மையை சிறப்பாக பிரதிபலிக்கிறது – ஆனால் இது குறிமுறைவரிகளைப் படிக்கவும் புரிந்துகொள்ளவும் கடினமாக்கும். பண்புகளை நீக்குதல் delete எனும் இயக்குபவரைப் பயன்படுத்தி மரபுரிமை அல்லாத பண்பினை அகற்றலாம். பண்பினை எவ்வாறு அகற்றுவது என்பதை பின்வரும் குறிமுறைவரிகள் காண்பிக்கின்றன.
//myobjஆனது a,bஆகிய இருபண்புகளுடன் ஒருபுதிய பொருளைஉருவாக்குகிறது,
const myobj = new Object();
myobj.a = 5;
myobj.b = 12;
// ஒரு பண்பினை அகற்றி, myobj ஐ மட்டும் b எனும் பண்புடன் விட்டுவிடும் .
delete myobj.a;
console.log (‘a’ in myobj); // output: “false”
ஜாவாஉரைநிரலில் பொருட்களை ஒப்பிடுதல், பொருட்கள் ஒரு குறிப்பு வகை. இரண்டு வேறுபட்ட பொருள்கள் ஒரே பண்புகளைக் கொண்டிருந்தாலும் அவை சமமாக இருக்காது. ஒரே பொருள் குறிப்பை அதனுடன் ஒப்பிட்டுப் பார்த்தால் மட்டுமே உண்மை கிடைக்கும்
. // இரண்டு மாறிகள்,ஒரே பண்புகளைக் கொண்ட இருவேறுபட்ட பொருட்கள்
const fruit = {name: ‘apple’};
const fruitbear = {name: ‘apple’};
fruit == fruitbear; // false என திரும்பும்
fruit === fruitbear; // false என திரும்பும்
// ஒரேபொருளிற்கு இருமாறிகள்variables,
const fruit = {name: ‘apple’};
const fruitbear = fruit; //fruitbearஎன்பதற்குfruit object எனும் மேற்கோளை ஒதுக்குக
//இங்கு fruitஎன்பதும், fruitbearஎன்பதும் ஒரே பொருளைச் சுட்டிக்காட்டுகின்றன
fruit == fruitbear; // trueஎனதிரும்பும்
fruit === fruitbear; // trueஎனதிரும்பும்
fruit.name = ‘grape’;
console.log(fruitbear); // வெளியீடு: { name: “grape” }, instead of { name: “apple” }
தொடரும்

ஜாவாஉரைநிரல் பயிற்சிவழிகாட்டி தொடர்-18.பொருட்களுடன் பணிபுரிதல்

ஜாவாஉரைநிரலானது ஒரு எளிய பொருள் அடிப்படையிலான முன்னுதாரணத்தில் வடிவமைக்கப்பட்டுள்ளது. ஒரு பொருள் என்பது பண்பியல்புகளின் தொகுப்பாகும், மேலும் பண்பியல்பு என்பது ஒரு பெயர் (அல்லது விசை) ஒரு மதிப்பு ஆகியவற்றுக்கு இடையேயான தொடர்பாகும். ஒரு பண்பியல்பின் மதிப்பு ஒரு செயலியாக இருக்கலாம், இதில் பண்பியல்பு ஒரு வழிமுறை என அறியப்படுகிறது. இணைய உலாவியில் முன்கூட்டியே வரையறுக்கப்பட்ட பொருட்களுக்கு கூடுதலாக, நம்முடைய சொந்த பொருட்களை நாமே வரையறுக்கலாம். பொருட்கள், பண்புகள், செயலிகள் வழிமுறைகள் ஆகியவற்றினை எவ்வாறு பயன்படுத்துவது நம்முடைய சொந்த பொருட்களை எவ்வாறு உருவாக்குவது என இந்த பகுதியில் காணலாம்.
பொருட்களின் கண்ணோட்டம்
ஜாவாஉரைநிரலில் உள்ள பொருட்கள், மற்ற பல நிரலாக்க மொழிகளைப் போன்றே, நடைமுறை வாழ்க்கையில் உள்ள பொருட்களுடன் ஒப்பிடலாம். ஜாவாஉரைநிரலில் உள்ள பொருட்களின் கருத்தமைவை நடைமுறை வாழ்க்கையின் பொருட்களுடன் புரிந்து கொள்ள முடியும்.
ஜாவா உரைநிரலில், ஒரு பொருள் என்பது பண்புகளும் வகைகளையும் கொண்ட ஒரு தனியானபொருளாகும். எடுத்துக்காட்டாக, ஒருதேநீர் கோப்பையுடன் ஒப்பிடுக. ஒரு தேநீர் கோப்பை என்பது ஒரு பொருள்,அது பின்வருமாறான பண்புகளை கொண்டது.அக்கோப்பைக்கு ஒரு நிறம், ஒரு வடிவமைப்பு, குறிப்பிட்டஎடை, அது செய்யப்பட்டபொருள் போன்ற பண்பியல்புகளை கொண்டுள்ளது. அதே வழியில், ஜாவாஉரைநிரலில் பொருட்கள் அவற்றின் பண்பியல்புகளை வரையறுக்கின்ற பண்பியல்புகளைக் கொண்டிருக்கின்றன.
பொருட்களும் பண்பியல்புகளும்
ஜாவா உரைநிரலின் பொருளானது அதனுடன் தொடர்புடைய பண்பியல்புகளைக் கொண்டுள்ளது. ஒரு பொருளின் பண்பு என்பது பொருளுடன் இணைக்கப்பட்ட மாறியாக விளக்கமளிக்கப்படலாம்.பொருளின் பண்பியில்புகளின் அடிப்படையில் சாதாரண ஜாவா உரைநிரல் மாறிகள் போன்றே இருக்கும், பொருட்களுடன் இணைக்கப்படுவதைத் தவிர. ஒரு பொருளின் பண்பியல்புகள் அப்பொருளின் பண்புகளை வரையறுக்கின்றன. ஒரு பொருளின் பண்பில்புகளை ஒரு எளிய புள்ளி-குறியீடு மூலம் அணுகலாம்:
objectName.propertyName
எல்லா ஜாவா உரைநிரல் மாறிகளைப் போன்றே, பொருளின் பெயர் (இது ஒரு சாதாரண மாறியாக இருக்கலாம்), பண்பியல்பின் பெயர் ஆகிய இரண்டும் எழுத்துருவிற்கு ஏற்றவாறு அமைந்திருக்கும். ஒரு பண்பியல்பிற்கு ஒரு மதிப்பை வழங்குவதன் மூலம் அதை வரையறுக்கலாம். எடுத்துக்காட்டாக, myCar என்ற பெயரில் ஒரு பொருளை உருவாக்கி, அதற்கு தயாரிப்பு, மாதிரி , ஆண்டு ஆகிய பண்புகளைக் கொடுப்போம்:
const myCar = new Object();
myCar.make = ‘Ford’;
myCar.model = ‘Mustang’;
myCar.year = 1969;
மேலே உள்ள எடுத்துக்காட்டை ஒரு பொருளின் தொடக்கமதிப்பிருத்தியைப் (initializer) பயன்படுத்தி எழுதலாம், இது பூஜ்ஜியம் அல்லது அதற்கு மேற்பட்ட இரட்டை பண்பியில்பின் பெயர்களும் ஒரு பொருளுடன் தொடர்புடைய மதிப்புகளும் காற்புள்ளியால் பிரிக்கப்பட்ட பட்டியலாகும்,இது ({ })என்றாவாறான சுருள் வடிவ இரட்டை பிறையடைப்புகளில் இணைக்கப்பட்டுள்ளது :
const myCar = {
make: ‘Ford’,
model: ‘Mustang’,
year: 1969
};
Unassigned properties of an object are undefined(and not null).
myCar.color; // வரையறுக்கப்படாதது
ஜாவா உரைநிரலில் பொருட்களின் பண்புகளை அடைப்புக்குறியைப் பயன்படுத்தி அணுகலாம் அல்லது அமைக்கலாம். பொருட்கள் சில சமயங்களில் துணை அணிகள் என்றும் அழைக்கப்படுகின்றன, ஏனெனில் ஒவ்வொரு பண்பியல்பும் அதை அணுகுவதற்குப் பயன்படுத்தப்படும் சரத்தின் மதிப்புடன் தொடர்புடையது. எனவே, எடுத்துக்காட்டாக, myCarobject இன் பண்பியல்புகளை பின்வருமாறு அணுகலாம்:
myCar[‘make’] = ‘Ford’;
myCar[‘model’] = ‘Mustang’;
myCar[‘year’] = 1969;
ஒரு பொருளின் பண்பியல்பின் பெயரானது JavaScriptஇன் சரமாக கூட இருக்கலாம் அல்லது வெற்று சரம் உட்பட சரமாக மாற்றக்கூடிய எதுவாக இருப்பினும், செல்லுபடியாகும். ஜாவா உரைநிரல் அடையாளங் காட்டியாக இல்லாத எந்தவொரு பண்பியல்புப் பெயரையும் (எடுத்துக்காட்டாக, காலிஇடம் அல்லது இடைக்கோடு கொண்ட பண்பியல்புப் பெயர் அல்லது எண்ணுடன் தொடங்கும்) பகர அடைப்புக்குறியைப் பயன்படுத்தி மட்டுமே அணுக முடியும். பண்பியல்புப் பெயர்கள் மாறும் வகையில் தீர்மானிக்கப்படும்போது (இயங்கும் நேரம் வரை பண்பியல்பின் பெயர் தீர்மானிக்கப்படாமல் இருக்கும் போது) இந்தக் குறியீடு மிகவும் பயனுள்ளதாக இருக்கும். எடுத்துக்காட்டுகள் பின்வருமாறு:
// நான்கு மாறிகள் ஒரேஊடுகடத்தலில் உருவாக்கப்பட்டு ஒதுக்கப்படுகின்றன,
// காற்புள்ளிகளால் பிரிக்கப்பட்டவை
const myObj = new Object(),
str = ‘myString’,
rand = Math.random(),
obj = new Object();
myObj.type = ‘Dot syntax’;
myObj[‘date created’] = ‘String with space’;
myObj[str] = ‘String value’;
myObj[rand] = ‘Random Number’;
myObj[obj] = ‘Object’;
myObj[”] = ‘Even an empty string’;
console.log(myObj);
ஜாவா உரைநிரலில்பொருளின் பண்பியல்புப் பெயர்கள் (விசைகள்) சரங்களாகவோ அல்லது சின்னங்களாகவோ மட்டுமே இருக்க முடியும் என்பதால், சதுர அடைப்புக்குறியின் குறியீட்டில் உள்ள அனைத்து விசைகளும் சின்னங்களாக இல்லாவிட்டால் , அவை சரமாக மாற்றப்படும் என்பதை நினைவில் கொள்க. (சிலநேரத்தில் இனத்தின் புலங்கள் முன்மொழிவுடன் முன்னேறும்போது தனிப்பட்ட பெயர்களும் சேர்க்கப்படும். , ஆனால் அவற்றை [] எனும் படிவத்துடன் பயன்படுத்த முடியாது). எடுத்துக்காட்டாக, மேலே உள்ள குறிமுறைவரிகளில், Obj உடன் objஎனும் விசை சேர்க்கப்படும் போது, JavaScript ஆனது obj.to String() எனும் வழிமுறையை அழைக்கின்றது, மேலும் இந்த முடிவு சரத்தை புதிய விசையாகப் பயன்படுத்துகின்றது. மாறியில் சேமிக்கப்படுகின்ற சரத்தின் மதிப்பைப் பயன்படுத்தியும் பண்புகளை அணுகலாம்:
let propertyName = ‘make’;
myCar[propertyName] = ‘Ford’;
propertyName = ‘model’;
myCar[propertyName] = ‘Mustang’;
ஒரு பொருளின் எண்ணிலடங்கா பண்புகளை மீண்டும் கூறுவதற்கு for…into என்ற மடக்கியுடனான அடைப்புக்குறிக்குள் பயன்படுத்தலாம். இது எவ்வாறு செயல்படுகிறது என்பதை விளக்குவதற்கான, பின்வரும் செயலியானது பொருளின் பண்புகளையும், பொருளின் பெயரையும் செயலிக்கு தருமதிப்புகளாக அனுப்பும் போது காண்பிக்கின்றது:
function show Props(obj, obj Name) {
let result = ”;
for (let i in obj) {
// obj.hasOwnProperty()என்பது பொருளின் முன்மாதிரி சங்கிலியிலிருந்து
// பண்புகளை வடிகட்ட பயன்படுகிறது.
if (obj.hasOwnProperty(i)) {
result += ${objName}.${i} = ${obj[i]}\n;
}
}
console.log(result);
}
எனவே, செயலியின் அழைப்பான showProps((myCar, ‘myCar’) என்பது பின்வருவனவற்றை அச்சிடுகின்றது:
myCar.make = Ford
myCar.model = Mustang
myCar.year = 1969
ஒரு பொருளின் பண்புகளை பட்டியலிடுக பொருளின் பண்பியல்புகளை பட்டியலிட/ தொடர்ந்ந்து செல்ல மூன்று சொந்த வழிகள் உள்ளன:
for… in எனும் மடக்கிகள்: இந்த வழிமுறை ஒரு பொருளின் அனைத்து கணக்கிடக்கூடிய பண்புகளையும் அதன் முன்மாதிரி சங்கிலியையும் கடந்து செல்கிறது.
• Object.keys(o).
இந்த வழிமுறையானது ஒரு பொருளிற்கு அனைத்து சொந்த (முன்மாதிரி சங்கிலியில் இல்லை) கணக்கிடக்கூடிய பண்புகளின் பெயர்கள் (“விசைகள்”) கொண்ட ஒரு அணிவரிசையை வழங்குகிறது.
Object.getOwnPropertyNames(o). இந்த வழிமுறையானது ஒரு பொருளிற்கு அனைத்து சொந்த பண்புகளின் பெயர்களையும் (கணக்கிடக்கூடிய அல்லது கணக்கிடமுடியாத) கொண்ட ஒரு அணிவரிசையை வழங்குகிறது. “மறைக்கப்பட்ட” பண்புகளை பட்டியலிட எந்தவொரு சொந்த வழிமுறையும் இல்லை (பொருளின் மூலம் அணுக முடியாத முன்மாதிரி சங்கிலியில் உள்ள பண்புகள், முன்மாதிரி சங்கிலியில் மற்றொரு பண்பியல்பானது ஏற்கனவே அதே பெயரைக் கொண்டிருப்பதால்). இருப்பினும், பின்வரும் செயலியின்மூலம் இதை அடைய முடியும்:
function listAllProperties(o) {
let objectToInspect = o;
let result = [];
while(objectToInspect !== null) {
result = result.concat(Object.getOwnPropertyNames(objectToInspect));
objectToInspect = Object.getPrototypeOf(objectToInspect)
}
return result;
}
புதிய பொருட்களை உருவாக்குதல் ஜாவா உரைநிரலில் பல முன்கூட்டியே வரையறுக்கப்பட்ட பொருட்களைக் கொண்டுள்ளது. கூடுதலாக, நம்முடைய சொந்த பொருட்களைகூட உருவாக்கலாம். பொருளின் துவக்கமதிப்பிருத்தியைப் பயன்படுத்தி ஒரு பொருளை உருவாக்கலாம். மாற்றாக, முதலில் ஒரு கட்டமைப்பாளரின் செயலியை உருவாக்கலாம், பின்னர் புதிய இயக்குபவருடன் இணைந்து அந்த செயலியை செயல்படுத்துகின்ற ஒரு பொருளை உடனடியாக உருவாக்கலாம்.
பொருள் துவக்கமதிப்பிருத்தியைப் பயன்படுத்துதல் பொருளின் துவக்கமதிப்பிருத்திகளைப் பயன்படுத்துவது சில சமயங்களில் எழுத்துப்பூர்வ குறிமுறைவரிகளுடன் பொருட்களை உருவாக்குவதாகக் குறிப்பிடப்படுகிறது. “பொருளின் தொடக்கமதிப்பிருத்தல் (Object initializer0” என்பது C++ பயன்படுத்தும் சொற்களுடன் ஒத்துப்போகிறது. பொருளின் தொடக்கமதிப்பிருத்தலைப் பயன்படுத்துகின்ற பொருளின் இலக்கணம் பின்வருமாறு:
const obj = {
property_1: value_1, // பண்பியல்பின்மதிப்பினை அடையாளங்காட்டலாம்…
2: value_2, // அல்லது ஒரு எண்ணை அடையாளங்காட்டலாம்…
// …,
‘property n’: value_n // அல்லது ஒருசரத்தினை அடையாளங்காட்டலாம்
};
இதில் obj என்பதே புதிய பொருளின் பெயராகும, முக்காற்புள்ளிகளுக்கு முன் உள்ள ஒவ்வொரு பண்பியில்பின் பெயரும் ஒரு அடையாளங்காட்டியாகும் (பெயர், எண் அல்லது சரம் எழுத்து), ஒவ்வொரு மதிப்பு _ii என்பது பண்பியல்பு பெயருக்கு ஒதுக்கப்பட்ட மதிப்பாகும். obj என்பதும் ஒதுக்கீடு என்பதும் ஒரு வாய்ப்பாகும்; நாம் இந்த பொருளை வேறு எங்கும் குறிப்பிடத் தேவையில்லை என்றால், அதை ஒரு மாறிக்கு ஒதுக்க தேவையில்லை. (குறிப்பு, ஒரு கூற்றில் எதிர்பார்க்கப்படும் இடத்தில் பொருள் தோன்றினால், அடைப்புக்குறிக்குள் பொருளை எழுத்துப்பூர்வமாக மடங்க வேண்டும் என்பதை நினைவில் கொள்க, எனவே ஒரு தொகுப்பான கூற்றுடன் எழுத்துப்பூர்வமானதை சேர்த்து குழப்பமடையக்கூடாது.)
பொருளின் தொடக்கமதிப்பிருத்திகள் கூட வெளிப்பாடுகளாகும், மேலும் ஒவ்வொரு பொருளின் தொடக்கமதிப்பிருத்தலும் அது தோன்றும் கூற்று ஆனது செயல்படுத்தப்படும் போதெல்லாம் ஒரு புதிய பொருளை உருவாக்குகிறது. ஒரே மாதிரியான பொருளின் தொடக்கமதிப்பிருத்திகள் ஒருவருக்கொருவர் சமமாக ஒப்பிடாத தனித்துவமான பொருட்களை உருவாக்குகின்றன. ஒரு அழைப்பு புதியObject()உருவாக்கப்பட்டது போன்று பொருட்கள் உருவாக்கப் படுகின்றன; அதாவது, பொருளின் நேரடி வெளிப்பாடுகளிலிருந்து உருவாக்கப்பட்ட பொருட்கள் பொருளின் நிகழ்வுகளாகும்.
பின்வரும் கூற்று ஒரு பொருளை உருவாக்கி அதன்மாறியை cond இன்வெளிப்பாடு உண்மையாக இருந்தால் மட்டுமே x இற்கு ஒதுக்குகிறது:
let x;
if (cond) {
x = {greeting: ‘hi there’};
}
பின்வரும் உதாரணம் மூன்று பண்புகளுடன் MyHonda ஐ உருவாக்குகிறது. இயந்திரத்தின் பண்பியல்பு என்பது அதன் சொந்த பண்புகளைக் கொண்ட ஒரு பொருள் என்பதை நினைவில் கொள்க.
const myHonda = {color: ‘red’, wheels: 4, engine: {cylinders: 4, size: 2.2}};
அணிவரிசைகளை உருவாக்க பொருளின்தொடக்கமதிப்பிரித்தலையும் பயன்படுத்திகொள்ளலாம். .
கட்டமைப்பாளர் செயலியைப் பயன்படுத்துதல் மாற்றாக,பின்வருமாறான இரண்டு படிமுறைகளுடன் ஒரு பொருளை உருவாக்கலாம்:

  1. ஒரு கட்டமைப்பாளர் செயலியை எழுதுவதன் மூலம் பொருளின்வகையை வரையறுத்திடுக. துவக்கத்தில் பெரிய எழுத்தைப் பயன்படுத்துவதற்கு நல்ல காரணத்துடன் ஒரு வலுவான வழக்கம் உள்ளது.
  2. பொருளின் எடுத்துக்காட்டினை புதிதாக உருவாக்கிடுக.
    ஒரு பொருளின் வகையை வரையறுக்க, அதன் பெயர், பண்புகள் வழிமுறைகளைக் குறிப்பிடும் பொருள் வகைக்கு ஒரு செயலியை உருவாக்கிடுக. எடுத்துக்காட்டாக, கார்களுக்கான பொருள் வகையை உருவாக்க விரும்புவதாகக்கொள்க. இந்த வகையான பொருளை கார் என்று அழைக்க வேண்டும், மேலும் அது தயாரிப்பு, மாதிரி , ஆண்டுக்கான பண்புகளைக் கொண்டிருக்க வேண்டும். இதைச் செய்ய,பின்வரும் செயலியைஎழுத லாம்:

function Car(make, model, year) {
this.make = make;
this.model = model;
this.year = year;
}
செயலிக்கு அனுப்பப்பட்ட மதிப்புகளின் அடிப்படையில் பொருளின் பண்புகளுக்கு மதிப்புகளை ஒதுக்குவதற்கு இதைப் பயன்படுத்துவதைக் கவனித்திடுக. இப்போது myCaras எனப்படும் ஒரு பொருளை உருவாக்கலாம்:
const myCar = new Car(‘Eagle’, ‘Talon TSi’, 1993);
இந்த கூற்றானது myCar அதன் பண்புகளுக்கான குறிப்பிட்ட மதிப்புகளை உருவாக்குகிறது. பின்னர் myCar.make இன் மதிப்பு “Eagle” எனும் சரமாகும், myCar.model ஆனது ‘Talon Tsi’ எனும் சரமாகும்.,myCar.year என்பது 1993 எனும் முழு எண் ஆகும், மேலும் பல. தருமதிப்பகளும் அளவுருக்களின் அணிவரிசையும் ஒரே மாதிரியாக இருக்க வேண்டும். newஎன்பதற்கு அழைப்பு செய்து எத்தனை காரின் பொருட்களையும் உருவாக்கலாம். எடுத்துக்காட்டா,
const kenscar = new Car(‘Nissan’, ‘300ZX’, 1992);
const vpgscar = new Car(‘Mazda’, ‘Miata’, 1990);
ஒரு பொருளுக்கு மற்றொரு பொருள் இருக்கின்றஅதே பண்பு இருக்கலாம். எடுத்துக்காட்டாக, Person என்ற ஒரு பொருளை பின்வருமாறு வரையறுக்கப்பட்டுதுள்ளதாக கொள்க:
function Person(name, age, sex) {
this.name = name;
this.age = age;
this.sex = sex;
}
பின்னர் இரண்டு புதிய ஆளுமைப் பொருட்களை பின்வருமாறு நிறுவுகை செய்திடலாம்:
const rand = new Person(‘Rand McKinnon’, 33, ‘M’);
const ken = new Person(‘Ken Jones’, 39, ‘M’);
பிறகு, காரின் வரையறையை பின்வருமாறு மாற்றி எழுதலாம்
function Car(make, model, year, owner) {
this.make = make;
this.model = model;
this.year = year;
this.owner = owner;
}
புதிய பொருட்களை உடனடியாக உருவாக்க, பின்வருவனவற்றைப் பயன்படுத்திகொள்க:
const car1 = new Car(‘Eagle’, ‘Talon TSi’, 1993, rand);
const car2 = new Car(‘Nissan’, ‘300ZX’, 1992, ken);
புதிய பொருட்களை உருவாக்கும் போது ஒரு நேரடி சரம் அல்லது முழு எண் மதிப்பைக் கடந்து செல்வதற்குப் பதிலாக, மேலே உள்ள கூற்றுகள் பொருட்களை அனுப்புகின்றன உரிமையாளர்களுக்கான தருமதிப்புகள். car2இன் உரிமையாளரின் பெயரை கண்டுபிடிக்க விரும்பினால், பின்வரும் பண்பியல்பினை அணுகலாம்:
car2.owner.name
முன்னர் வரையறுக்கப்பட்ட பொருளுக்கு எப்போதும் புதியதொரு பண்பியல்பினை சேர்க்கலாம் என்பதை நினைவில் கொள்க. எடுத்துக்காட்டாக,
car1.color = ‘black’;;
car1இன் color எனும் ஒரு பண்பியில்பை ச் சேர்த்து, அதற்கு ‘black’ எனும் மதிப்பை ஒதுக்குகீடுசெய்திடலாம். இருப்பினும், இது வேறு எந்த பொருட்களையும் பாதிக்காது. ஒரே மாதிரியான அனைத்து பொருட்களுக்கும் புதிய பண்பியல்பினை சேர்க்க, Carobject வகையின் வரையறையில் பண்பியல்பினை சேர்க்க வேண்டும்
தொடரும்

ஜாவாஉரைநிரல் பயிற்சிவழிகாட்டி தொடர்-18.பொருட்களுடன் பணிபுரிதல்

ஜாவாஉரைநிரலானது ஒரு எளிய பொருள்(object) அடிப்படையிலான முன் உதாரணத்தில் வடிவமைக்கப்பட்டுள்ளது. இங்கு ஒரு பொருள் என்பது பண்பியல்புகளின் தொகுப்பாகும், மேலும் பண்பியல்பு என்பது ஒரு பெயர் (அல்லது விசை) ,ஒரு மதிப்பு ஆகியவற்றுக்கு இடையேயான தொடர்பாகும். ஒரு பண்பியல்பின் மதிப்பு ஒரு செயலியாக இருக்கலாம், இதில் பண்பியல் பானது ஒரு வழிமுறை என அறியப்படுகிறது. இணையஉலாவியில் முன்கூட்டியே வரையறுக்கப்பட்ட பொருட்களுக்கு கூடுதலாக, நம்முடைய சொந்த பொருட்களை நாம் வரையறுக்கலாம். பொருட்கள், பண்புகள், செயலிகள், வழிமுறைகளை எவ்வாறு பயன்படுத்துவது நம்முடைய சொந்த பொருட்களை எவ்வாறு உருவாக்குவது என்பதை இந்த பகுதி விவரிக்கிறது.

பொருட்களின் கண்ணோட்டம்

ஜாவாஉரைநிரலில் உள்ள பொருட்கள, மற்ற பல நிரலாக்க மொழிகளைப் போன்றே, நடைமுறை வாழ்க்கையில் உள்ள பொருட்களுடன் ஒப்பிடலாம். ஜாவாஉரைநிரலில் உள்ள பொருட்களின் கருத்தை நடைமுறை வாழ்க்கையின், தெரிந்த உறுதியான பொருட்களுடன் புரிந்து கொள்ள முடியும். ஜாவாஉரைநிரலில், ஒரு பொருள் என்பது பண்பியல்புளும் வகைகளையும் கொண்ட ஒரு தன்னிகரற்ற நிறுவனம்போன்து. எடுத்துக் காட்டா, ஒரு தேநீர்கோப்பையுடன் ஒப்பிடுக. ஒரு தேநீர்கோப்பை என்பது ஒரு பொருளாகும், அது ஒரு தேநீர்கோப்பைக்கானபண்பியல்புகள கொண்டது. ஒரு தேநீர் கோப்பைக்கு ஒரு வண்ணம் உண்டு, ஒரு வடிவமைப்புடன், அதற்கான உருவமும், அது செய்யப்பட்ட ஒரு பொருள் போன்றவைகளும் உள்ளன. அதே வழியில், ஜாவாஉரைநிரலின் பொருட்கள் அவற்றின் பண்பியல்புகளை வரையறுக்கின்றம் பண்பியல்புகளைக் கொண்டிருக்கலாம். பொருட்ளும் பண்பியல்புகளும் ஜாவாஉரைநிரலின் பொருளையும் அதனுடன் தொடர்புடைய பண்பியல்புகளையும் கொண்டுள்ளது. ஒரு பொருளின் பண்பு என்பது பொருளுடன் இணைக்கப்பட்ட மாறியாக விளக்கமளிக்கலாம். பொருளின் பண்பியல்புகளின் அடிப்படையில் சாதாரண ஜாவாஉரைநிரலின் மாறிகள போன்றே இருக்கும், பொருட்களுடன் இணைக்கப்படுவதைத் தவிர. ஒரு பொருளின் பண்பியல்புகளானவை பொருளின் பண்பியல்புகளை வரையறுக் கின்றன. ஒரு பொருளின் பண்பியல்புகளை நாம் ஒரு எளிய dot-notation மூலம் அணுகலாம்:

objectName.propertyName

எல்லா ஜாவாஉரைநிரலின் மாறிகளைப் போன்றே, பொருளின் பெயர் (இது ஒரு சாதாரண மாறியாக இருக்கலாம்) பண்பியல்பின் பெயர் இரண்டும் எழுத்துருக்களை பொருத்து அமைவதாகும். ஒரு பண்பியல்பிற்கு ஒரு மதிப்பை வழங்குவதன் மூலம் அதை வரையறுக்கலாம். எடுத்துக்காட்டாக, myCar என்ற பெயரில் ஒரு பொருளை உருவாக்கி, அதனுடைய தயாரிப்பு, மாதிரி, ஆண்டு ஆகிய பண்பியல்புகளைக் கொடுப்போம்:

const myCar = new Object();

myCar.make = 'Ford';

myCar.model = 'Mustang';

myCar.year = 1969;

மேலே கூறிய எடுத்துகாட்டு ஒரு பொருளின் துவக்கநிலையாளரைப்( object initializer) பயன்படுத்தி எழுதலாம், இது பூஜ்ஜியம் அல்லது அதற்கு மேற்பட்ட இரட்டை பண்பியல்புகளின் பெயர்களம் ஒரு பொருளுடன் தொடர்புடைய மதிப்புகளும் கால்புள்ளியால் பிரிக்கப்பட்ட பட்டியலாகும்.

curly braces ({}):

const myCar = {

make: 'Ford',

model: 'Mustang',

year: 1969

};

ஒரு பொருளின் ஒதுக்கப்படாத பண்பியல்புகள் வரையறுக்கவும்படவில்லை (பூஜ்யமாகவும் இல்லை).

myCar.color; // வரையறுக்கப்படவில்லை(undefined)

ஜாவாஉரைநிரலினுடைய பொருட்களின் பண்பியல்புகளை அடைப்புக்குறி notation பயன்படுத்தி அணுகலாம் அல்லது அமைக்கலாம். பொருட்கள் சில சமயங்களில் துணை அணிகள் என்றும் அழைக்கப்படுகின்றன, ஏனெனில் ஒவ்வொரு பண்பியில்பும் அதை அணுகுவதற்குப் பயன்படுத்தப்படும் சர மதிப்புடன் தொடர்புடையது. எனவே, எடுத்துக்காட்டாக, myCar எனும் பொருளின் பண்பியல்புகளை பின்வருமாறு அணுகலாம்:

myCar['make'] = 'Ford';

myCar['model'] = 'Mustang';

myCar['year'] = 1969;

ஒரு பொருளின் பண்பியல்பின்பெயர் செல்லுபடியாகின்ற JavaScript சரமாக இருக்கலாம் அல்லது வெற்று சரம் உட்பட சரமாக மாற்றக்கூடிய எதுவுமாக இருக்கலாம். இருப்பினும், செல்லுபடியாகின்ற ஜாவாஉரைநிரலின் அடையாளங் காட்டியாக இல்லாத எந்தவொரு பண்பியல்பின் பெயரையும் (எடுத்துக்காட்டா, காலிஇடம் அல்லது இடைக்கோடு கொண்ட பண்பியில்பின் பெயர் அல்லது எண்களுடன் தொடங்கும்) பகர அடைப்புக்குறியீட்டைப் பயன்படுத்தி மட்டுமே அணுக முடியும். பண்பியில்புகளின் பெயர்கள் மாறும் வகையில் தீர்மானிக்கப் படும்போது (இயங்கும் நேரம் வரை பண்பியல்பின் பெயர் தீர்மானிக்கப்படாமல் இருக்கும் போது) இந்தnotation மிகவும் பயனுள்ளதாக இருக்கும். எடுத்துக்காட்டுகள் பின்வருமாறு:

// நான்கு மாறிகள் ஒரேநேரத்தில் உருவாக்கப்பட்டு ஒதுக்கப்படுகின்றன,

// காற்புள்ளிகளால் பிரிக்கப்படுகின்றன

const myObj = new Object(),

str = 'myString',

rand = Math.random(),

obj = new Object();

myObj.type = 'Dot syntax';

myObj['date created'] = 'String with space';

myObj[str] = 'String value';

myObj[rand] = 'Random Number';

myObj[obj] = 'Object';

myObj[''] = 'Even an empty string';

console.log(myObj);

ஜாவாஉரைநிரலினுடைய பொருளின் பண்பியல்புகளுடையப் பெயர்கள் (திறவுகோள்கள்) சரங்களாகவோ அல்லது சின்னங்களாகவோ மட்டுமே இருக்க முடியும் என்பதால்,[]எனும் பகர அடைப்புக்குறி notationல் உள்ள அனைத்து திறவுகோள்களும் notationக மாற்றப்படுகின்ற முன்னேற்றத்தினை காண்பிக்கிறது, ஆனால் அவற்றை[] எனும் படிவத்துடன் பயன்படுத்த மாட்டோம்). எடுத்துக்காட்டாக, மேலே உள்ள குறிமுறைவரிகளில், Obj உடன் objஇன் திறவுகோளை சேர்க்கப்படும் போது, JavaScript ஆனது obj.to String()எனும் வழி முறையை அழைக்கி்ன்றது, மேலும் இந்த முடிவு சரத்தை புதிய திறவுகோளாகப் பயன்படுத்துகின்ற. மாறியில் சேமிக்கப்படும் சர மதிப்பைப் பயன்படுத்தி பண்பியல்புகளை அணுகலாம்:

let propertyName = 'make';

myCar[propertyName] = 'Ford';

propertyName = 'model';

myCar[propertyName] = 'Mustang';

ஒரு பொருளின் எண்ணிலடங்கா பண்பியல்புகளை for…into.எனமீண்டும் அழைப்பதற்கு அடைப்புக்குறி குறியீட்டைப் பயன்படுத்தலாம். இது எவ்வாறு செயல்படுகிறது என்பதை விளக்கமளிப்பதற்கு, பின்வரும் செயலியானது பொருளையும் பொருளின் பெயரையும் செயலிக்ான தருக்கங்களாக அனுப்பும்போது பொருளின் பண்பியல்புகளைக் காண்பிக்கிறது:

function show Props(obj, obj Name) {

let result = '';

for (let i in obj) {

// obj.hasOwnProperty() is used to filter out properties from the object's prototype chain

if (obj.hasOwnProperty(i)) {

result += `${objName}.${i} = ${obj[i]}\n`;

}

}

console.log(result);

}

எனவே, செயலியின் showProps(myCar, 'myCar')) எனும அழைப்பு பின்வருவனவற்றை அச்சிடுகின்றது:

myCar.make = Ford

myCar.model = Mustang

myCar.year = 1969

ஒரு பொருளின் பண்பியல்புகளை பட்டியலிடுதல்

பொருளின் பண்புகளை பட்டியலிட/பயணிக்க மூன்று சொந்த வழிகள் உள்ளன:

for... in எனும் மடக்கிகள். இந்தவழி முறையானது ஒரு பொருளின் அனைத்து எண்ணக்கூடிய பண்புகளையும் அதன் முன்மாதிரி சங்கிலியையும் கடந்து செல்கிறது.

Object.keys(o). இந்த வழிமுறையானது ஒரு objecto ன் அனைத்து சொந்த (முன்மாதிரி சங்கிலியில் இல்லை) எண்ணக்கூடிய பண்புகளின் பெயர்கள் ("திறவுகோள்கள்") கொண்ட ஒரு அணியை வழங்குகிறது.

Object.getOwnPropertyNames(o). இந்த வழிமுறையானது ஒரு objecto ன் அனைத்து சொந்த பண்புகளின் பெயர்களையும் (எண்ணக்கூடிய அல்லது எண்ணமுடியாத) கொண்ட ஒரு அணியை வழங்குகிறது."மறைக்கப்பட்(hidden)" பண்பியல்புகளை பட்டியலிட எந்தவொரு சொந்த வழியும் இல்லை (பொருளின் மூலம் அணுக முடியாத முன்மாதிரி சங்கிலியில் உள்ள பண்பியல்புகள், முன்மாதிரி சங்கிலியில் மற்றொரு பண்பியல்பு ஏற்கனவே அதே பெயரைக் கொண்டி ருப்பதால்). இருப்பினும், பின்வரும் செயலியின் மூலம் இதை அடையமுடியும்:

function listAllProperties(o) {

let objectToInspect = o;

let result = [];

while(objectToInspect !== null) {

result = result.concat(Object.getOwnPropertyNames(objectToInspect));

objectToInspect = Object.getPrototypeOf(objectToInspect)

}

return result;

}

புதிய பொருட்களை உருவாக்குதல் ஜாவாஉரைநிரலானது பல முன்கூட்டியே வரையறுக்கப்பட்ட பொருகளைக் கொண்டுள்ளது. கூடுதலாக, நம்முடைய சொந்த பொருட்களைகூட உருவாக்கலாம். பொருளின்துவக்கியைப்(Object initializer) பயன்படுத்தி ஒரு பொருளை உருவாக்கலாம். மாற்றாக, முதலில் ஒரு கட்டமைப்பாளின் செயலியை உருவாக்கலாம், பின்னர் புதிய இயக்கியுடன் இணைந்து அந்த செயலியை செயல்படுத்தும் ஒரு பொருளை உடனடியாக உருவாக்கலாம்.

பொருளின் துவக்கிகளைப் (Object initializers)பயன்படுத்துதல்

இதனைப் பயன்படுத்துவது சில சமயங்களில் படிக்ககூடிய notation உடன் பொருட்களை உருவாக்குவதாகக் குறிப்பிடப்படுகிறது. "Object initializer" என்பது C++ பயன்படுத்தும் சொற்களுடன் ஒத்துப்போகிறது. பொருள் துவக்கியைப் பயன்படுத்தும் பொருளின் தொடரியல்பின்வருமாறு:

const obj = {

property_1: value_1, // பண்பியல்பின் பெயர அடையாளம்காட்டலாம்

2: value_2, //அல்லது ஒரு எண்ணை...அடையாளம்காட்டலாம்

// ...,

'property n': value_n // அல்லது ஒரு சரத்தினை அடையாளம்காட்டலாம்

};

obj என்பது புதிய பொருளின் பெயராகும், முக்காற்புள்ளிகளுக்கு முன் உள்ள ஒவ்வொரு பண்பியல்பின் பெயரும் ஒரு அடையாளங்காட்டியாகும் (பெயர், எண் அல்லது ஒரு சர எழுத்து), ஒவ்வொரு மதிப்பு_ii என்பது பண்பியல்பின் பெயருக்கு ஒதுக்கப்பட்ட மதிப்புஆகும். obj என்பதும் ஒதுக்கீடுஎன்பதும்ாய்ப்புகளாகும்; இந்த பொருளை வேறு எங்கும் குறிப்பிட தேவையில்லை என்றால், அதை ஒரு மாறிக்கு ஒதுக்க தேவையில்லை. (குறிப்பு, ஒரு கூற்று எதிர்பார்க்கப்படும் இடத்தில் பொருள் தோன்றினால், அடைப்புக்குறிக்குள் பொருளை எழுத்துப்பூர்வமாக மடக்க வேண்டும் என்பதை நினைவில் கொள், எனவே ஒரு தொகுதியான கூற்று உடன் எழுத்துப்பூர்வமானது என குழப்ப மடையக் கூடாது.)

பொருளின் துவக்கிகளின் வெளிப்பாடுகள்,

மேலும் ஒவ்வொரு பொருளின் துவக்கியும் அது தோன்றும் கூற்று செயல்படுத்தப்படும் போதெல்லாம் ஒரு புதிய பொருளை உருவாக்குகிறது. ஒரே மாதிரியான பொருள் துவக்கிகள் ஒன்றுக்கொண்று சமமாக ஒப்பிடாத தனித்துவமான பொருட்களை உருவாக்குகின்றன. ஒரு அழைப்பு new Object() என உருவாக்கப்பட்டது போன்று பொருட்கள் உருவாக்கப்படுகின்றன; அதாவது, பொருளின் நேரடி வெளிப்பாடுகளிலிருந்து உருவாக்கப்பட்ட பொருட்கள் பொருளின் நிகழ்வுகளாகும். பின்வரும் கூற்று ஒரு பொருளை உருவாக்கி அதைமாறிக்கு cond இன் வெளிப்பாடு உண்மையாக இருந்தால் மட்டுமே ஒதுக்குகிறது:

let x;

if (cond) {

x = {greeting: 'hi there'};

}

பின்வரும் எடுத்துக்காட்டு myHonda ஐ மூன்று பண்பியல்புகளுடன் உருவாக்கு கிறது. இயந்திரத்தின் பண்பியல்பு என்பது அதன் சொந்த பண்புகளைக் கொண்ட ஒரு பொருள் என்பதை நினைவில் கொள்க.

const myHonda = {color: 'red', wheels: 4, engine: {cylinders: 4, size: 2.2}};

அணிவரிசைகளை உருவாக்க பொருளின் துவக்கிகளையும் பயன்படுத்தலாம். . கட்டமைப்பாளரின் செயலியைப் பயன்படுத்துதல்

மாற்றாக, பின்வருமாறான இரண்டு படிமுறைகளுடன் ஒரு பொருளை உருவாக்கலாம்:

படிமுறை1. ஒரு கட்டமைப்பாளரின் செயலியை எழுதுவதன் மூலம் பொருள் வகையை வரையறுத்திடுக. ஒருதுவக்கநிலையிலான பெரிய எழுத்தைப் பயன்படுத்துவதற்கு நல்ல காரணத்துடன் ஒரு வலுவான மரபு உள்ளது.

படிமுறை2. பொருளின் எடுத்துக்காட்டை புதிதாக உருவாக்கிடுக.

ஒரு பொருளின் வகையை வரையறுக்க, அதன் பெயர், பண்பியல்புகள், வழிமுறைகளைக் குறிப்பிடுகின்ற பொருள் வகைக்கு ஒரு செயலியை உருவாக்கிடுக. எடுத்துக்காட்டாக, Car எனும் பொருள் வகையை உருவாக்க விரும்புவதாக கொள்க இந்த வகையான பொருளை Car என்று அழைக்க வேண்டும், மேலும் அது தயாரிப்பு, மாதிரி, ஆண்டுக்கான பண்பியல்புகளைக் கொண்டிருக்க வேண்டும். இதைச் செய்ய, பின்வருமாறான செயலியை எழுதிடுக:

function Car(make, model, year) {

this.make = make;

this.model = model;

this.year = year;

}

செயலிக்கு அனுப்பப்பட்ட மதிப்புகளின் அடிப்படையில் பொருளின் பண்பியல்புகளுக்கு மதிப்புகளை ஒதுக்குவதற்கு இதைப் பயன்படுத்துவதைக் கவனித்திடு. இப்போது பின்வருமாறு myCar என்ற பொருளை உருவாக்கலாம்:

const myCar = new Car('Eagle', 'Talon TSi', 1993);

இந்த கூற்றானது myCar ஐ உருவாக்கி அதன் பண்பியல்புகளுக்கான குறிப்பிட்ட மதிப்புகளை ஒதுக்குகிறது. பின்னர் myCar.make இன் மதிப்பு "Eagle" எனும் சரம், myCar.model என்பது ' Talon TSi' எனும்சரம்,myCar.year என்பது 1993 எனும் முழு எண், போன்ற பல.ருக்கங்களின் அளவுருக்களின் அணிவரிசை ஒரே மாதிரியாக இருக்க வேண்டும். புதிய அழைப்புகளின் மூலம் எத்தனை கார்களுக்கான பொருட்களை வேண்டுமானாலும் உருவாக்கலாம். எடுத்துகாட்டா,

const kenscar = new Car('Nissan', '300ZX', 1992);

const vpgscar = new Car('Mazda', 'Miata', 1990);

ஒரு பொருளுக்கு மற்றொரு பொருளில் இருக்கும் ஒரு பண்பில்பு இருக்கலாம். எடுத்துக்காட்டாக, Person என்ற ஒரு பொருளை பின்வருமாறு வரையறுப்பதாக கொள்:

function Person(name, age, sex) {

this.name = name;

this.age = age;

this.sex = sex;

}

பின்னர் இரண்டு new Person எனும் பொருட்களைஉருவாக்கிடுக(instantiate) :

const rand = new Person('Rand McKinnon', 33, 'M');

const ken = new Person('Ken Jones', 39, 'M');

பிறகு, ஒரு Person ன் பொருளை எடுத்துக் கொள்ளும் உரிமையாளரின் பண்பியல்பினை பின்வருமாறு சேர்க்க, Car ன் வரையறையை மீண்டும் எழுதலாம்:

function Car(make, model, year, owner) {

this.make = make;

this.model = model;

this.year = year;

this.owner = owner;

}

உடனடியாக புதிய பொருட்களை உருவாக்க(instantiate) , பின்வருவனவற்றைப் பயன்படுத்திகொள்க:

const car1 = new Car('Eagle', 'Talon TSi', 1993, rand);

const car2 = new Car('Nissan', '300ZX', 1992, ken);

புதிய பொருட்களை உருவாக்கும் போது ஒரு நேரடி சரம் அல்லது முழு எண் மதிப்பைக் கடந்து செல்வதற்குப் பதிலாக, மேற்கூறிய கூற்றுகள் உரிமையாளர் களுக்கான தருக்கங்களாக பொருட்களை randandken அனுப்புகின்றன என்பதைக் கவனித்திடுக. Car2 ன் உரிமையாளரின் பெயரை கண்டுபிடிக்க விரும்பினால், பின்வரும் பண்பியல்பினை அணுகலாம்:

car2.owner.name

முன்னர் வரையறுக்கப்பட்ட பொருளுக்கு எப்போதும் ஒரு பண்பியல்பினை கூடுதலாக சேர்க்கலாம் என்பதை நினைவில் கொள். எடுத்துக்காட்டா, கூற்றானது

car1.color = 'black';

car1இற்கு பண்பியல்பு நிறத்தைச் சேர்க்கிறது, மேலும் அதற்கு ''black' எனும் மதிப்பை ஒதுக்குகிறது. இருப்பினும், இது வேறு எந்த பொருட்களையும் பாதிக்காது. ஒரே மாதிரியான அனைத்துப் பொருட்களிலும் புதிய பண்பியல்பினை சேர்க்க, car எனும் பொருள் வகையின் வரையறையில் பண்பியல்பினை சேர்க்க வேண்டும்.

தொடரும்

தெரிந்துகொள்ள வேண்டிய ஜாவாஉரைநிரலின் முக்கியசொற்கள்

ஜாவா உரைநிரலானது(Javascript) ஒரு நவீண மிகத்திறனுடைய கணினி மொழியாகும், தற்போது இதில் நாம் பயன்படுத்தி கொள்வதற்காகவென தயாராக. மிகஅதிக எண்ணிக்கையிலான நூலகங்களுடனும் ,கட்டமைப்புகளுடனும் பல்வேறு வாய்ப்புகள் இருப்பதால், இந்த கணினி மொழியின் திறனை கருத்தில்கொண்டு அதன் முக்கிய சொற்கள், செயலிகள், இலக்கணம்,ஆகியவைகளை மனப்பாடம் செய்து வைத்துகொள்வது நம்மனைவருக்கும் மிகபயனுள்ளதாக இருக்கும். அதனால் இந்த கட்டுரை/யானது ஜாவாஉரைநிரலின் முக்கியசொற்கள்,செயலிகள், இலக்கணம் ஆகியவைகளை உள்ளடக்கிய ஜாவாஉரைநிரலின் சொற்களஞ்சியமாக தொகுக்கப் பட்டுள்ளது.
ஜாவாஉரைநிரலின் மாறிகள்
var : ஜாவாஉரைநிரலை பயன்படுத்திடும் அனைவராலும் கண்டிப்பாக பயன் படுத்தப்படுவது இந்த var எனும் மாறிஆகும். இதனை மறுஒதுக்கீடு செய்யலாம் ஆனால் ஒரு செயலிக்குள் மட்டுமே அணுக முடியும், அதாவது குறிமுறை வரிகளில் செயல்படுத்தப்படும் போது இந்த முக்கிய சொல்லுடன் வரையறுக்கப்பட்ட மாறிகள் மட்டுமே மேலே தொடர்ந்து செயல்படும்.
const : மறுஒதுக்கீடு செய்ய முடியாது ,குறிமுறைவரிகளுக்குள் தோன்றும் முன் அணுக முடியாது, அதாவது அனுகிடுகின்ற நோக்கம் தடுக்கப்படுகின்றது.
let: இது const ஐ போன்றே அனுகிடுகின்ற நோக்கம் தடுக்கப்படுகின்றது, இருப்பினும், இதனை மாறியை (var) போன்று மீண்டும் ஒதுக்கீடுசெய்திடலாம் ஆனால் மீண்டும் அறிவிக்க முடியாது.
தரவு வகைகள்
எண்கள்:var age = 33
மாறிகள்: var a
உரை (சரங்கள்): var a = “குப்பன்”
செயலிகள்: var b = 4 + 5 + 6
உண்மை(True) அல்லது தவறான (false) கூற்றுகள்: var a = true
மாறிலி எண்கள்: const PI = 3.14
பொருட்கள்: var fullName = {firstName:”வசந்த”, lastName: “குமார்l”}
பொருட்கள் (Objects)
ஜாவாஉரைநிரலில் உள்ள பொருட்களுக்கு இது ஒரு எளிய எடுத்துக்காட்டு. இந்த பொருள் car எனும்மாறியை விவரிக்கிறது, மேலும் திறவுகோள்கள் அல்லது தயாரிப்பு, மாதிரி, ஆண்டு போன்ற பண்பியல்புகளை உள்ளடக்கியது பொருளின் பண்பியல்பின் பெயர்கள். ஒவ்வொரு பண்பியல்பிற்கும் Nissan,Altima,2022 போன்றஒரு மதிப்பு உள்ளது. ஜாவாஉரைநிரலில்Object என்பது மதிப்புகளைக் கொண்ட பண்பியல்புகளின் தொகுப்பாகும், மேலும் இது ஒரு வழிமுறையாக செயல்படுகிறது.
var car = {
make:”Nissan”,
model:”Altima”,
year:2022,
};
ஒப்பீட்டு இயக்கிகள்
==: என்பது சமம்
===: என்பது சமமான மதிப்பும் சமமான வகையும் ஆகும்
!=: என்பது சமமானது அன்று
!==: என்பது சமமான மதிப்பும் சமமான வகையும் அன்று

: பின்னதை விட பெரியது
<: பின்னதை விட சிறியது
=: பின்னதைவிடப் பெரியது அல்லது சமமானது
<=: பின்னதைவிட சிறியதாக அல்லது சமமாக உள்ளது
?: Ternary எனும் இயக்கி
தருக்க இயக்கிகள்
&&: AND எனும் தருக்கம்
||: OR அல்லது எனும் தருக்கம்
!: NOT அன்று எனும் தருக்கம்
வெளியீட்டு தரவு
alert(): உலாவி சாளரத்தின் தரவு வெளியீட்டின் எச்சரிக்கை பெட்டி
confirm(): ஒருyes/no என்ற உரையாடல் பெட்டியைத் திறந்து, பயனர் சொடுக்குதல் செய்வதைப் பொறுத்து true/false என்பதைத் தருகின்றது
console.log():உலாவியின் முகப்புத்திரையில் தகவலை எழுதலாம். பிழைத்திருத்தத்திற்கு நல்லது.
document.write(): HTML ஆவணத்திற்குள் நேரடியாக எழுதலாம்
prompt(): பயனர் உள்ளீட்டிற்கான உரையாடலை உருவாக்குதல்
அணிவரிசை வழிமுறைகள்
Array:என்பதுஒரேநேரத்தில் பலமதிப்புகளை வைத்திருக்கக்கூடிய ஒரு பொருளாகும்.
concat(): பல அணிவரிசைகளை ஒன்றாக இணைத்தல்
indexOf(): குறிப்பிடப்பட்ட பொருளின் துவக்க மதிப்பை வழங்குதல்
join(): ஒரு அணிவரிசையின் உறுப்புகளை ஒற்றை சரமாக இணைத்து சரத்தை திருப்பி அனுப்புதல்
lastIndexOf(): கொடுக்கப்பட்ட உறுப்பு அணிவரிசையில் தோன்றும் கடைசி நிலையைக் வழங்குதல்
pop(): வரிசையின் கடைசி உறுப்பை அகற்றுதல்
push(): வரிசையின் கடைசியில் ஒரு புதிய உறுப்பைச் சேர்த்தல்
reverse(): உறுப்புகளை இறங்கு வரிசையில் வரிசைப்படுத்திடுதல்
shift(): அணிவரிசையின் முதல் உறுப்பை அகற்றுதல்
slice():அணிவரிசையின் ஒரு பகுதியின் நகலை புதிய அணிவரிசையில் இழுத்தல்
splice(): ஒரு குறிப்பிட்ட வழியில் நிலைகளை, கூறுகளைச் சேர்த்தல்
toString(): உறுப்புகளை சரங்களாக மாற்றுதல்
unshift(): தொடக்கத்தில் ஒரு புதிய உறுப்பைச் சேர்த்தல்
valueOf(): கொடுக்கப்பட்ட உறுப்பு அணிவரிசையில் தோன்றும் முதல் நிலையைத் திருப்புதல்
ஜாவாஉரைநிரல் மடக்கிகள்
Loops: குறிப்பிட்ட பணியை செயல்படுத்தப்பட்ட நிலையின்கீழ் திரும்பதிரும்ப செய்தல்.
for (before loop; condition for loop; execute after loop) {
// மடக்குதலின் போது என்ன செய்ய வேண்டும்
}
for: என்பது ஒரு நிபந்தனை மடக்கியை உருவாக்குகிறது
while:என்பது குறிப்பிட்ட நிபந்தனை உண்மையாக மதிப்பிடப்படும் வரை, குறைந்தபட்சம் ஒரு முறை மடக்கிசெயல்படும் நிபந்தனைகளை அமைக்கிறது
do while: இது while:ஐ போன்றே, இது ஒரு முறையாவது இயக்கி, நிபந்தனை பூர்த்தி செய்யப்பட்டுள்ளதா என்பதைசரி பார்க்க இறுதியில் ஒரு சரிபார்ப்பினையைச் செய்கிறது. சரியாக இருந்தால், மீண்டும் இயக்கப்படும்
break: சில நிபந்தனைகளில் மடக்குதலை நிறுத்தி வெளியேறச்செய்கின்றது
continue: சில நிபந்தனைகள் பூர்த்தி செய்தால் மடக்கியைத் தவிர்க்கின்றது

if-else எனும் கூற்றுகள்(statements)
அடைப்புக்குறிக்குள் உள்ள நிபந்தனை உண்மையாக இருக்கும் வரை, ஒரு if கூற்றானது அடைப்புக்குறிக்குள் குறிமுறைவரிகளை இயக்குகின்றது. பொய்எனில், அதற்கு பதிலாக வேறொரு வாய்ப்பின் கூற்று செயல்படுத்தப்படுகின்றது.
if (condition) {
// நிபந்தனை நிறைவேற்றப்பட்டால் இதைச் செய்க
} else {
// நிபந்தனை பூர்த்தி செய்யப்படாவிட்டால் இதைச் செய்க
}
சரங்கள்
சரத்தின் வழிமுறைகள்
charAt(): ஒரு சரத்தின் உள்ளே குறிப்பிட்ட நிலையில் ஒரு எழுத்தை வழங்குக
charCodeAt(): அந்த நிலையில் உள்ள எழுத்தின் ஒருங்குகுறியைக் வழங்குக
concat(): இரண்டு அல்லது அதற்கு மேற்பட்ட சரங்களை ஒன்றாக இணைத்திடுக (ஒன்றிணைத்திடுக).
fromCharCode(): UTF-16 குறியீட்டு அலகுகளின் குறிப்பிட்ட வரிசையிலிருந்து உருவாக்கப்பட்ட ஒரு சரத்தை திருப்பி அனுப்பிடுக
indexOf():சரத்திற்குள்குறிப்பிட்ட உரையின் முதல் நிகழ்வின் நிலையை வழங்குக
lastIndexOf(): இது indexOf() என்பதை போன்றே உள்ளது ஆனால் கடைசி நிகழ்விலிருந்து தேடுகிறது
match():தேடுதல் வழிமுறைக்கு எதிராக சரத்தின் பொருத்தங்களை மீட்டெடுத்தல்
replace():சரத்தில் குறிப்பிட்ட உரையை கண்டுபிடித்து மாற்றியமைத்தல்
search(): பொருந்தக்கூடிய உரைக்கான தேடுதலை இயக்கி அதன் நிலையைத் திருப்பி அனுப்புதல்
slice():சரத்தின் ஒரு பகுதியை பிரித்தெடுத்து புதிய சரமாக திருப்பி அனுப்புதல்
split():சரத்தின் பொருளை குறிப்பிட்ட நிலையில் சரங்களின் வரிசையில் பிரித்தல்
substr(): இதுவும் slice(): போன்றே குறிப்பிட்ட எண்ணிக்கையிலான எழுத்துக்களைப் பொறுத்து ஒரு துனைச்சரத்தினை பிரித்தெடுத்தல்
substring(): எதிர்மறை குறியீடுகளை ஏற்க முடியாது, இது slice():போன்றதே
toLowerCase(): சரங்களை சிறிய எழுத்தாக மாற்றிடுதல்
toUpperCase(): சரங்களை பெரிய எழுத்தாக மாற்றிடுதல்
valueOf(): ஒரு சரத்தின் பொருளின் துவக்க மதிப்பை (பண்புகள் அல்லது வழிமுறைகள் இல்லாதது) திருப்புதல்
எண் களின்வழிமுறைகள்
toExponential(): as exponential notationஎழுதப்பட்ட முழுஎண்ணகளின் சரத்தை திருப்பி அனுப்புதல்
toFixed(): குறிப்பிட்ட எண்ணிக்கையிலான பதின்ம எண்களுடன் ஒரு எண்ணின் சரத்தை வழங்குதல்
toPrecision(): குறிப்பிட்ட நீளத்துடன் எழுதப்பட்ட எண்களாலான சரமாகும்
toString(): ஒரு எண்ணை சரமாகத் திருப்புதல்
valueOf(): ஒரு எண்ணை எண்ணாகவேத் தருதல்
கணித வழிமுறைகள்
abs(a): a இன் முழுமையான (நேர்மறை) மதிப்பை வழங்குக
acos(x): x இன் Arccosine, அலைவெண்களில்(radians)
asin(x): x இன் ஆர்க்சைன், அலைவெண்களில்(radians)
atan(x): எண் மதிப்பாக x இன் Arctangent
atan2(y,x): அதன் தருக்கங்களின் கோட்பாட்டின் Arctangent
ceil(a): அதன் அருகில் உள்ள முழு எண் வரையிலான மதிப்பு
cos(a): a இன் cosin (x என்பது அலைவெண்ணில்(radian) உள்ளது)
exp(a): Ex இன் மதிப்பு
floor(a):: அதன் அருகில் உள்ள முழு எண்ணுக்கு மதிப்பிடப்பட்டது
log(a): a இன் இயற்கை மடக்கை (அடிப்படை E).
max(a,b,c…,z): அதிக மதிப்புள்ள எண்ணை வழங்குதல்
min(a,b,c…,z): குறைந்த மதிப்புடன் எண்ணை வழங்குதல்
pow(a,b): b இன் அடுக்கு a
random(): 0 ,1 ஆகியவற்றிற்கு இடையில் ஒரு சீரற்ற எண்ணை வழங்குதல்
round(a): அதன் அருகில் உள்ள முழு எண்ணிற்கு மதிப்பிடுதல்
sin(a): a இன் sine (a என்பது அலைவெண்ணில்(radian) உள்ளது)
sqrt(a): a இன் வர்க்கமூலம்
tan(a): ஒரு கோணத்தின் தொடுகோடு
ஜாவாஉரைநிரலில் தேதிகளைக் கையாளுதல்
தேதிகளை அமைத்தல்
Date(): தற்போதைய தேதி, நேரத்துடன் புதிய தேதியை உருவாக்குக
Date(2022, 6, 22, 4, 22, 11, 0): தனிப்பயன் தேதி பொருளை உருவாக்குக. எண்கள் ஆண்டு, மாதம், நாள், மணி, நிமிடங்கள், வினாடிகள், மில்லி விநாடிகளைக் குறிக்கும். ஆண்டு மாதம் தவிர எதையும் தவிர்க்கலாம்.
Date(“2022-07-29”): சரமாக தேதி அறிவித்திடுக
தேதி , நேர மதிப்புகளை கொண்டுவருதல்
getDate(): மாதத்தின் நாள் எண்ணாக (1-31)
getDay(): வார நாள் எண்ணாக (0-6)
getFullYear(): ஆண்டு நான்கு இலக்க எண்ணாக (yyyy)
getHours(): மணிநேரம் (0-23)
getMilliseconds(): மில்லி விநாடி (0-999)
getMinutes(): நிமிடம் (0-59)
getMonth(): மாதம் ஒரு எண்ணாக (0-11)
getSeconds(): இரண்டாவதைபெறுக (0-59)
getTime(): ஜனவரி 1, 1970 முதல் மில்லி விநாடிகள் பெறுக
getUTCDate(): உலகளாவிய நேரத்தின்படி குறிப்பிட்ட தேதியில் மாதத்தின் நாள்
(தேதி) (நாள், மாதம், முழு ஆண்டு, மணிநேரம், நிமிடங்கள் போன்ற வற்றுக்கும் கிடைக்கும்)
parse: ஒரு தேதியின் சரம் பிரதிநிதித்துவத்தை ஆய்வுசெய்தல் ஜனவரி 1, 1970
முதல் மில்லி விநாடிகளின் எண்ணிக்கையை வழங்குதல்

தேதியின் ஒரு பகுதியை அமைத்தல்
setDate(): நாளை எண்ணாக அமைத்தல் (1-31)
setFullYear(): வருடத்தை அமைத்தல் (விரும்பினால் மாதம், நாள்)
setHours(): மணிநேரத்தை அமைத்தல் (0-23)
setMilliseconds(): மில்லி விநாடிகளை அமைத்தல் (0-999)
setMinutes (): நிமிடங்களை அமைத்தல் (0-59)
setMonth(): மாதத்தை அமைத்தல் (0-11)
setSeconds(): வினாடிகளை அமைத்தல் (0-59)
setTime(): நேரத்தை அமைத்தல் (ஜனவரி 1, 1970 முதல் மில்லி விநாடிகள்)
setUTCDate(): உலகளாவிய நேரத்தின்படி குறிப்பிட்ட தேதிக்கு மாதத்தின் நாளை அமைத்தல் (நாள், மாதம், முழு ஆண்டு, மணிநேரம், நிமிடங்கள் போன்றவற்றுக்கும் கிடைக்கும்)
Dom பயன்முறை
முனைமத்தின் வழிமுறைகள்
appendChild(): ஒரு உறுப்பில் ஒரு புதியதுனைமுனைமத்தைடை கடைசி துனை முனைமமாகச் சேர்த்தல்
cloneNode(): HTML உறுப்பை நகல் செய்க
compareDocumentPosition(): இரண்டு உறுப்புகளின் ஆவண நிலையை ஒப்பிடுக
getFeature(): குறிப்பிட்ட வசதியின் APIகளை செயல்படுத்தும் ஒரு பொருளைத் திருப்பி அனுப்பக
hasAtributes(): ஒரு உறுப்புக்கு ஏதேனும் பண்புக்கூறுகள் இருந்தால் உண்மை என்பதைத் திருப்புக, இல்லையெனில் தவறு என்பதைத் திருப்புக,
hasChildNodes(): ஒரு உறுப்பில் ஏதேனும் துனை முனைமங்கள் இருந்தால் உண்மை என்பதைத் திருப்புக, இல்லையெனில் தவறு என்பதைத் திருப்புக
insertBefore(): குறிப்பிட்ட, ஏற்கனவே உள்ள துனை முனைமத்திற்கு முன் புதிய துனை முனைமத்தைச் செருகிடுக
isDefaultNamespace(): குறிப்பிட்ட பெயர்இடைவெளிURIஐஇயல்புநிலையாக இருந்தால் உண்மை என்பதைத் திருப்புக, இல்லையெனில் தவறு என்பதைத் திருப்புக
isEqualNode(): இரண்டு கூறுகள் சமமாக உள்ளதா என சரிபார்த்திடுக
isSameNode(): இரண்டு கூறுகள் ஒரே முனைமமா எனச் சரிபார்த்திடுக
isSupported(): உறுப்பில் ஒரு குறிப்பிட்ட வசதி ஆதரிக்கப்பட்டால் உண்மை என்பதைத் திருப்புக
lookupNamespaceURI(): கொடுக்கப்பட்ட முனைமத்துடன் தொடர்புடைய பெயர் இடைவெளிURIஐ திருப்புக
normalize(): அருகில் உள்ள உரை முனைமங்களில் இணைத்து, ஒரு உறுப்பில் உள்ள வெற்று உரை முனைமங்களை நீக்குக
removeChild(): ஒரு உறுப்பிலிருந்து ஒரு துனை முனைமத்தை அகற்றிடுக ReplaceChild(): ஒரு உறுப்பில் ஒரு துனை முனைமத்தை மாற்றிடுக

உறுப்பு வழிமுறைகள்
getAttribute():உறுப்பு முனைமத்தின் குறிப்பிட்ட பண்புக்கூறு மதிப்பை வழங்குதல்
getAttributeNS():குறிப்பிட்ட பெயர்வெளி பெயருடன் பண்புக்கூறின் சரமதிப்பை வழங்குதல்
getAttributeNode(): குறிப்பிட்ட பண்புக்கூறு முனைமத்தை பெறுதல்
getAttributeNodeNS(): கொடுக்கப்பட்ட பெயர்வெளி , பெயருடன் பண்புக்கூறுக்கான பண்புக்கூறு முனைமத்தை திருப்பி விடுதல்
getElementsByTagName(): குறிப்பிட்ட குறிச்சொல் பெயருடன் அனைத்து துனை
உறுப்புகளின் தொகுப்பை வழங்குக
getElementsByTagNameNS(): கொடுக்கப்பட்ட பெயர்வெளியைச் சேர்ந்த குறிப்பிட்ட
குறிச்சொல் பெயருடன் உறுப்புகளின் நேரடி HTML சேகரித்தல்
hasAtribute(): ஒரு உறுப்புக்கு ஏதேனும் பண்புக்கூறுகள் இருந்தால் உண்மை என்பதைத் திருப்புக, இல்லையெனில் தவறு என திருப்புக
hasAttributeNS(): கொடுக்கப்பட்ட பெயர்வெளியில் உள்ள தற்போதைய உறுப்பு
குறிப்பிட்ட பண்புக்கூறு உள்ளதா என்பதைக் குறிக்கும் உண்மை/தவறு
எனும் மதிப்பை வழங்குக.
removeAttribute(): ஒரு உறுப்பிலிருந்து ஒரு குறிப்பிட்ட பண்புக்கூறை அகற்றுக
lookupPrefix(): கொடுக்கப்பட்ட பெயர்வெளிக்கான முன்னொட்டைக் கொண்ட DOMString இருந்தால், அதைத் திருப்பி அனுப்புக
removeAttributeNS(): குறிப்பிட்ட பெயர்வெளியில் உள்ள ஒரு உறுப்பிலிருந்து
குறிப்பிட்ட பண்புக்கூறை அகற்றுக
removeAttributeNode(): குறிப்பிட்ட பண்புக்கூறு முனைமத்தை அகற்றிவிட்டு,
அகற்றப்பட்ட முனைமத்தைத் திருப்பித் தருக
setAttribute(): குறிப்பிடப்பட்ட பண்புக்கூறை ஒரு குறிப்பிட்ட மதிப்பிற்கு அமைத்திடுக
அல்லது மாற்றிடுக
setAttributeNS(): கொடுக்கப்பட்ட பெயர்வெளியுடன் பெயருடன் ஒரு புதிய
பண்புக்கூறைச் சேர்த்திடுக அல்லது பண்புக்கூறின் மதிப்பை மாற்றிடுக setAttributeNode(): குறிப்பிட்ட பண்புக்கூறு முனைமத்தை அமைத்திடுக அல்லது
மாற்றிடுக
setAttributeNodeNS(): ஒரு உறுப்புக்கு புதிய பெயர் இடைவெளி பண்புமுனைமத்தைச்
சேர்த்திடுக

ஜாவாஉரைநிரல் நிகழ்வுகள்
சுட்டி

onclick: ஒரு உறுப்பு மீது பயனாளர் சொடுக்குதல் செய்கிறார்
oncontextmenu: சூழல் பட்டியை திறக்க பயனாளர் ஒரு உறுப்பு மீது வலதுபுற
பொத்தானை சொடுக்குதல்
ondblclick: ஒரு உறுப்பு மீது பயனாளர் இருமுறை சொடுக்குதல் செய்கிறார்
onmousedown: பயனர் ஒரு உறுப்புக்கு மேல் சுட்டியின் பொத்தானை அழுத்துகிறார் onmouseenter: சுட்டி ஒரு உறுப்பு மீது நகர்கிறது
onmouseleave: சுட்டி ஒரு உறுப்புக்கு வெளியே நகர்கிறது
onmousemove: ஒரு உறுப்புக்கு மேல் இருக்கும் போது சுட்டி நகர்கிறது
onmouseover: சுட்டி ஒரு உறுப்பு அல்லது அதன் துனைஉறுப்பு ஒன்றின் மீது
நகர்கிறது
setInterval(): ஒரு செயலியை அழைத்திடுக அல்லது ஒரு வெளிப்பாட்டை
மதிப்பிடுக
oninput: ஒரு உறுப்பு மீது பயனாளர் உள்ளீடு
onmouseup: ஒரு உறுப்பு மீது பயனாளர் சுட்டி பொத்தானை வெளியிடுக
onmouseout: பயனர் ஒரு உறுப்பு அல்லது அதன் துனைஉறுப்புகளில் இருந்து இடம்சுட்டியின் சுட்டியை நகர்த்துதல்
onerror: வெளிப்புற கோப்பை ஏற்றும் போது பிழை ஏற்படுதல்
onloadeddata: பல்லூடக தரவு ஏற்றப்பட்டது
onloadedmetadata: மீப்பெரும் தரவு (பரிமாணங்கள் , கால அளவு போன்றவை)
ஏற்றப்பட்டது
onloadstart: குறிப்பிட்ட பல்லூடகத்தில் உலாவி தேடத் தொடங்குகிறது
onpause: பல்லூடக பயனரால் அல்லது தானாக இடைநிறுத்தப்படுகிறது
onplay: பல்லூடகம் தொடங்கப்பட்டது அல்லது இடைநிறுத்தப்படவில்லை
onplaying: இடைநிறுத்தப்பட்ட பிறகு அல்லது இடையகத்திற்காக நிறுத்தப்பட்ட
பிறகு பல்லூடகம் இயங்குகிறது
onprogress: உலாவி பல்லூடகத்தினைப் பதிவிறக்கும் பணியில் உள்ளது
onratechange: பல்லூடக இயங்கும் வேக மாற்றங்கள்
onseeked: பயனாளர் பல்லூடகத்தில் ஒரு புதிய நிலைக்கு நகர்வதை/தவிர்ப்பதை
முடித்தார்
onseeking: பயனர் நகரத் தொடங்குகிறார்/தவிர்க்கிறார்
onstalled: உலாவி பல்லூடகத்தினை பதிவேற்ற முயற்சிக்கிறது, ஆனால் அது
கிடைக்கவில்லை
onsuspend — உலாவி வேண்டுமென்றே பல்லூடக்கத்தினை பதிவேற்றவில்லை
ontimeupdate: விளையாட்டு நிலை மாறிவிட்டது (எ.கா. வேகமாக முன்னோக்கி
சென்றதால்)
onvolumechange: பல்லூடக அளவு மாறிவிட்டது (முடக்கம் உட்பட)
onwaiting: பல்லூடகம் இடைநிறுத்தப்பட்டது, ஆனால் மீண்டும் தொடங்கும் என்று
எதிர்பார்க்கப்படுகிறது (எடுத்துக்காட்டாக, இடையகப்படுத்தல்)

ஜாவாஉரைநிரல் பயிற்சிவழிகாட்டி தொடர்-17. முக்கிய தொகுப்புகள்

இந்த பகுதிஒரு திறவுகோளால் அட்டவணைப்படுத்தப்பட்ட தரவு சேகரிப்புகளை அறிமுகப்படுத்துகிறது; வரைபடமும் , தொகுப்பான பொருட்களும் செருகுகின்ற வரிசையில் மீண்டும் செய்யக்கூடிய உறுப்புகளைக் கொண்டுள்ளன.
வரைபடமும் வரைபட பொருளும்
ECMAScript 2015ஆனது மதிப்புகளுக்கு மதிப்புகளை வரைபடமாக்க புதிய தரவு கட்டமைப்பை அறிமுகப்படுத்துகிறது. ஒரு வரைபடபொருள்(Map object)என்பது ஒரு எளிய திறவுகோளின்/மதிப்பின் வரைபடத்தையும் அதன் உறுப்புகளையும் செருகுகின்ற வரிசையில் மீண்டும் செய்ய முடியும். பின்வருகின்ற குறிமுறைவரிகள் வரைபடத்துடன்கூடிய சில அடிப்படை செயலிகளைக் காண்பிக்கிறது. ஒவ்வொரு மறு செய்கைக்கும் [திறவுகோள், மதிப்பு] வரிசையை வழங்க, for…of எனும் மடக்கியைப் பயன்படுத்திகொள்ளலாம்.
let sayings = new Map();
sayings.set(‘dog’, ‘woof’);
sayings.set(‘cat’, ‘meow’);
sayings.set(‘elephant’, ‘toot’);
sayings.size; // 3
sayings.get(‘dog’); // woof
sayings.get(‘fox’); // undefined
sayings.has(‘bird’); // false
sayings.delete(‘dog’);
sayings.has(‘dog’); // false

for (let [key, value] of sayings) {
console.log(key + ‘ goes ‘ + value);
}
// “cat goes meow”
// “elephant goes toot”

sayings.clear();
sayings.size; // 0

பொருளும் வரைபடமும் ஒப்பிடப்பட்டது
பாரம்பரியமாக, மதிப்புகளுக்கு சரங்களை வரைபடமாக்க பொருட்கள் பயன்படுத்தப்படுகின்றன. பொருட்கள் மதிப்புகளுக்கு திறவுகோள்களை அமைக்கவும், அந்த மதிப்புகளை மீட்டெடுக்கவும், திறவுகோளகளை நீக்கவும் திறவுகோளில் ஏதாவது சேமிக்கப்பட்டுள்ளதா என்பதைக் கண்டறியவும் நம்மை அனுமதிக்கின்றன. வரைபடப் பொருட்களானவை சிறந்த வரைபடங்களை உருவாக்குகின்ற சில நன்மைகளையும் கொண்டுள்ளன,
. • ஒரு பொருளின் திறவுகோளானவை சரங்கள் அல்லது சின்னங்கள் ஆகும், அவை வரைபடத்திற்குள் எந்த மதிப்பிலும் இருக்கலாம்.
• ஒரு பொருளின் அளவை கைமுறையாகக் கண்காணிக்க வேண்டியிருக்கும் போது,வரைபடத்தின் அளவை எளிதாகப் பெறலாம்.
• வரைபடங்களின் மறு செய்கை உறுப்புகளின் செருகுகின்ற வரிசையில் உள்ளது.
• ஒரு பொருளுக்கு ஒரு முன்மாதிரி உள்ளது, எனவே வரைபடத்தில் இயல்புநிலை திறவுகோள்கள் உள்ளன. (இது using map = Object.create(null) ஐப் பயன்படுத்தி அனுப்பலாம்.)
வரைபடத்தைப் பயன் படுத்தலாமா அல்லது பொருளைப் பயன்படுத்தலாமா என்பதைத் தீர்மானிக்க பின்வரும் மூன்று உதவிக்குறிப்புகள் நமக்கு உதவக்கூடும்:
• இயங்குகின்ற நேரம் வரை திறவுகோள்கள் தெரியாதபோதும், எல்லா திறவுகோள்களும் ஒரே வகையிலும், எல்லா மதிப்புகளும் ஒரே வகையிலும் இருக்கும்போது, பொருட்களின் மேல் வரைபடங்களைப் பயன்படுத்திடுக.
• தொடக்கநிலை மதிப்புகளை திறவுகோளாகச் சேமிக்க வேண்டிய அவசியம் இருந்தால் வரைபடங்களைப் பயன்படுத்திடுக, ஏனெனில் பொருளானது ஒவ்வொரு திறவுகோளையும், எண் மதிப்பின், பூலியன் மதிப்பின் அல்லது வேறு ஏதேனும் பழமையான மதிப்பின் ஒரு சரமாகக் கருதுகிறது.
• தனிப்பட்ட உறுப்புகளில் செயல்படுகின்ற தருக்கம் இருக்கும்போது பொருட்களைப் பயன்படுத்திடுக.
WeakMap எனும் பொருள்
WeakMap என்பது திறவுகோள்/மதிப்பு ஜோடிகளின் தொகுப்பாகும், அதன் திறவுகோள்களின் பொருட்களாக இருக்க வேண்டும், எந்தவொரு தன்னிச்சையான ஜாவாஉரைநிரல் வகையின் மதிப்புகள் அதன் திறவு கோள்களுக்கு வலுவான குறிப்புகளை உருவாக்காது. அதாவது, WeakMapஇல் ஒரு பொருளின் திறவுகோள், குப்பை சேகரிக்கப்படுவதைத் தடுக்காது. திறவுகோளாகப் பயன்படுத்தப்படும் ஒரு பொருள் சேகரிக்கப்பட்டவுடன், எந்தவொரு WeakMapஇலும் அதனுடன் தொடர்புடைய மதிப்புகள் குப்பை சேகரிப்பாளர்களாக மாறிவிடும் – அவை மற்ற இடங்களில் வலுவாகக் குறிப்பிடப்படாத வரை. WeakMapAPI அடிப்படையில் MapAPI போன்றே உள்ளது. இருப்பினும், ஒரு WeakMap அதன்திறவுகோளின் உயிர்த்தன்மையைக் கண்காணிக்க அனுமதிக்காது, அதனால்தான் அது கணக்கீட்டை அனுமதிக்காது. எனவேWeakMapஇல் உள்ள திறவுகோளின் பட்டியலைப் பெற எந்த வழி முறையும் இல்லை. வழிமுறைஇருந்தால், பட்டியலான குப்பை சேகரிப்பின் நிலையைப் பொறுத்ததுஆகும்,அது நிர்ணயம் செய்யாததை அறிமுகப்படுத்து கிறது. WeakMap பொருட்களின் ஒரு பயன்பாடானது, ஒரு பொருளுக்கான தனிப்பட்ட தரவைச் சேமிப்பது அல்லது செயல்படுத்துதலின் விவரங்களை மறைப்பது ஆகும். பின்வரும் எடுத்துக்காட்டு நிக் ஃபிட்ஸ்ஜெரால்டின் என்பவரின் “ECMA உரைநிரலின் WeakMap உடன் செயல்படுத்துதல் விவரங்களை மறைத்தல்”.எனும் வலைப்பதிவு இடுகையிலிப்பதுஆகும் தனிப்பட்ட தரவு , வழிமுறைகள்ஆகியவை குறிக்கோளின் உள்ளே இருக்கும் தனிப்பட்ட WeakMap பொருளில் சேமிக்கப்படும். நிகழ்வு முன்மாதிரியில் வெளிப்படும் அனைத்தும் பொதுவாகும்; மற்ற அனைத்தும் வெளி உலகத்திலிருந்து அணுக முடியாதவை, ஏனெனில் தனிப்பட்டவை தகவமைவிலிருந்து பதிவேற்றம் செய்யப்படவில்லை.

const privates = new WeakMap();
function Public() {
const me = {
// Private data goes here
};
privates.set(this, me);
}
Public.prototype.method = function () {
const me = privates.get(this);
// Do stuff with private data in me
};
module.exports = Public;

தொகுதிகள் & தொகுதியான பொருள்

தொகுதியான பொருட்கள் என்பவை மதிப்புகளின் தொகுப்புகளாகும். அதன் உறுப்புகளை செருகும் வரிசையில் மீண்டும் செய்யலாம். ஒரு தொகுதியில் உள்ள மதிப்பு ஒருமுறை மட்டுமே நிகழலாம்; இது தொகுதியின் தொகுப்பிடும் தனித்தன்மை வாய்ந்தது. பின்வரும் குறிமுறைவரிகள் ஒரு தொகுதியுடன் சில அடிப்படை செயலிகளைக் காண்பிக்கிறது.
let mySet = new Set();
mySet.add(1);
mySet.add(‘some text’);
mySet.add(‘foo’);
mySet.has(1); // true
mySet.delete(‘foo’);
mySet.size; // 2
for (let item of mySet) console.log(item);
// 1
// “some text”

அணிவரிசையும் தொகுதிக்கும் இடையே மாற்றுதல் Array.from அல்லது spread syntaxஐ பயன்படுத்தி ஒரு தொகுதியிலிருந்து ஒரு அணிவரிசையை உருவாக்கலாம். மேலும், தொகுதியின் கட்டமைப்பாளர் மற்ற திசையில் மாற்ற ஒரு அணிவரிசையை ஏற்றுக்கொள்கின்றது
. குறிப்பு: Setobjectsஆனவை தனித்துவமான மதிப்புகளைச் சேமிக்கின்றன-எனவே,இதனை மாற்றும் போது அணியிலிருந்து நகல் கூறுகளும் நீக்கப்படும்!
Array.from(mySet);
[…mySet2];
mySet2 = new Set([1, 2, 3, 4]);
அணிவரிசையும் தொகுதியும் ஒப்பிடுதல் பாரம்பரியமாக, பல சூழ்நிலைகளில் ஜாவாஉரைநிரலில் உள்ள அணிவரிசைகளில் உறுப்புகளின் தொகுதி சேமிக்கப்படுகிறது. இருப்பினும், புதிய தொகுதியின் பொருள் சில நன்மைகளைக் கொண்டுள்ளது:
• மதிப்பின்படி அணிவரிசை உறுப்புகளை நீக்குவது (arr.splice(arr.indexOf(val), 1)) மிகவும் மெதுவாக உள்ளது.
• தொகுதியான பொருட்கள் உறுப்புகளை அவற்றின் மதிப்பின்படி நீக்க அனுமதிக்கின்றது. ஒரு அணிவரிசையுடன், ஒரு உறுப்பு குறிமுறைவரிகளின் அடிப்படையில் இடமாற்றம் செய்ய வேண்டும்.
• அணிவரிசையில் உள்ள குறிமுறைவரிகளின் NaN எனும் மதிப்பைக் கண்டறிய முடியாது
. • பொருட்கள் தனிப்பட்ட மதிப்புகளைச் சேமிக்கின்றன. கைமுறையாக நகல்களை கண்காணிக்க வேண்டியதில்லை.
WeakSet object
பொருள்களின் தொகுதிகள். WeakSet ல் உள்ள ஒரு பொருள் ஒரு முறை மட்டுமே நிகழலாம். WeakSetஇன் சேகரிப்பில் இது தனித்துவமானது, மேலும் பொருட்கள் எண்ண முடியாதவை. தொகுப்பான பொருளின் முக்கிய வேறுபாடுகள்பின்வருமாறு:
• தொகுதிகளுக்கு மாறாக, WeakSet என்பது பொருள்களின் தொகுதிகள் மட்டுமே, எந்த வகையிலும் தன்னிச்சையான மதிப்புகள் அல்ல.
• WeakSet சேமிக்கப்பட்ட ஒரு பொருளுக்கு வேறு எந்த குறிப்பும் இல்லை என்றால், அவை குப்பைகளை சேகரிக்கலாம். சேகரிப்பில் சேமிக்கப்பட்டுள்ள தற்போதைய பொருட்களின் பட்டியல் இல்லை என்பதும் இதன் பொருளாகும்.
• WeakSetஎண்ணிகணக்கிட முடியாது.
WeakSet objectஇன் பயன்பாட்டு வழக்குகள் குறைவாகவே உள்ளன. அவை நினைவகத்தை கசியவிடாது, எனவே DOM கூறுகளை ஒரு திறவுகோளாகப் பயன்படுத்துவதும், கண்காணிப்பு நோக்கங்களுக்காக அவற்றைக் குறிப்பதும் பாதுகாப்பாக இருக்கும்.
வரைபடம் தொகுதியின் முக்கிய மதிப்பு சமத்துவம்
வரைபடப் பொருட்களின் முக்கிய சமத்துவம் தொகுப்பான பொருட்களின் மதிப்பு சமத்துவம் ஆகிய இரண்டும் “அதே மதிப்பு-பூஜ்ஜிய தருக்கத்தின்” அடிப்படையிலானது:
• சமத்துவ அடையாளமானது ஒப்பீட்டு இயக்கி=== போன்று செயல்படுகிறது.
• -0 , +0 ஆகியன சமமாகக் கருதப்படுகிறது.
• NaN என்பது தனக்குச் சமமாகக் கருதப்படுகிறது (முரணாக===).
தொடரும்

ஜாவாஉரைநிரல் பயிற்சிவழிகாட்டி தொடர்-16. அட்டவணைப்படுத்தப்பட்ட தொகுப்புகள்

இந்த பகுதி ஒரு சுட்டுவரிசை மதிப்பால் வரிசைப்படுத்தப்பட்ட தரவுகளின் தொகுப்பினை அறிமுகப்படுத்துகிறது. அணிவரிசை பொருட்கள் வகைப் படுத்தப்பட்ட அணிவரிசை பொருட்கள் போன்ற அணிவரிசைகள் அணிவரிசை போன்ற கட்டுமைப்புகள் இதில் அடங்கும்.

அணிவரிசை பொருள்

Array என்பது பெயரடனும் சுட்டுவரிசையுடனும்ாம் குறிப்பிடும் மதிப்புகளின் வரிசைப்படுத்தப்பட்ட பட்டியலாகும். எடுத்துக்காட்டாக, ஏதனுமொரு அணிவரிசையை கருத்தில் கொள்க, அதில் ஊழியர்களின் பெயர்கள் அவர்களின் சுட்டுஎண் பணியாளர் எண்ணால் குறியிடப்பட்டிருக்கும். emp[0] என்பதில் பணியாளர் எண் பூஜ்யம, emp[1] என்பதில் பணியாளர் எண் ஒன்று, என்வாறு. JavaScript இல் வெளிப் படையான அணிவரிசை தரவு வகை இல்லை. இருப்பினும், பயன்பாடுகளில் அணிவரிசைகளுடன் செயல்படுவதற்காக முன் வரையறுக்கப்பட்ட Arrayobject ன் வழிமுறைகளையும் பயன்படுத்தலாம். Arrayobject ஆனது அணிவரிசைகளை இணைத்தல், தலைகீழாக மாற்றுதல் வரிசைப்படுத்துதல் போன்ற பல்வேறு கையாளும் வழிமுறைகளைக் கொண்டுள்ளது. இது அணி வரிசையின் நீளம், வழக்கமான வெளிப்பாடுகளுடன் பயன்படுத்துவதற்கான பிற பண்பியல்புகளை தீர்மானிக்கின்றவாறு அமைந்துள்ளது.

ஒரு அணிவரிசையை உருவாக்குதல்

பின்வரும் கூற்றுகள் சமமான அணிவரிசைகளை உருவாக்குகின்றன:

let arr = new Array(element0, element1, ..., elementN)

let arr = Array(element0, element1, ..., elementN)

let arr = [element0, element1, ..., elementN]

இதில் element0, element1, ..., elementN என்பது அணிவரிசையின் உறுப்புகளுக்கான மதிப்புகளின் பட்டியலாகும். இந்த மதிப்புகள் குறிப்பிடப்பட்டால், அணிவரிசை யானது அணிவரிசையின் கூறுகளாக அவற்றைக் கொண்டு துவக்கப்படும்.அணி வரிசையின் நீளம் பண்பியல்புருக்கங்களின் எண்ணிக்கைக்கு ஏற்ப அமைக்கப்பட்டுள்ளது. அடைப்புக்குறி தொடரியல் "அணிவரிசை எழுத்து" அல்லது "அணிவரிசை துவக்கி" என்று அழைக்கப்படுகிறது. அணிவரிசை உருவாக்கத்தின் மற்ற வடிவங்களை விட இது குறுகியது, எனவே பொதுவாக உருப்படிகள் எதுவும் இல்லாமல்பூஜ்ஜியமற்ற நீளம் கொண்ட அணிவரிசையை உருவாக்கிடுமாறு விரும்பப்படுகிறது. , பின்வருவனவற்றில் ஒன்றைப் பயன்படுத்தலாம்:

// This...

let arr = new Array(arrayLength)

// ...results in the same array as this

let arr = Array(arrayLength)

// This has exactly the same effect

let arr = []

arr.length = arrayLength

குறிப்பு: மேலே உள்ள குறிமுறைவரிகளில், அணிவரிசையின் நீளம் ஒரு எண்ணாக இருக்க வேண்டும். இல்லையெனில், ஒற்றை உறுப்புடன் (வழங்கப்பட்ட மதிப்பு) அணிவரிசை உருவாக்கப்படும். Callingarr.length will returnarrayLength, ஆனால் அணிவரிசையில் எந்த உறுப்புகளும் இல்லை. ஒரு for…inஎனும் மடக்கியானது அணிவரிசையில் எந்தப் பொருளையும் கண்டுபிடிக்காது. மேலே காண்பித்தவாறு புதிதாக வரையறுக்கப்பட்ட மாறிக்கு கூடுதலாக, அணிவரிசைகள் புதிய அல்லது ஏற்கனவே உள்ள பொருளின் பண்புகளாகவும் ஒதுக்கலாம்:

let obj = {}

// ...

obj.prop = [element0, element1, ..., elementN]

// OR

let obj = {prop: [element0, element1, ...., elementN]}

ஒரு ஒற்றை உறுப்புடன் ஒரு அணிவரிசையை துவக்க விரும்பினால், உறுப்பு ஒரு எண்ணாக இருந்தால், அடைப்புக்குறி தொடரியல் பயன்படுத்த வேண்டும். அணிவரிசை()கட்டமைப்பாளர் அல்லது செயலிக்கு ஒரு ஒற்றை எண்மதிப்பு அனுப்பப்படும் போது, அது ஒரு உறுப்பாக இல்லாமல், அணியின் நீளமாக விளக்கமளிக்கப்படுகிறது

let arr = [42] // Creates an array with only one element:

// the number 42.

let arr = Array(42) // Creates an array with no elements

// and arr.length set to 42.

//

// This is equivalent to:

let arr = []

arr.length = 42

Array(N) அழைப்பது, N ஆனது முழு எண் அல்லாத பகுதியின் பகுதி பூஜ்யம் அல்லாததாக இருந்தால்Rang eError உருவாகிறது,. பின்வரும் எடுத்துக்காட்டு இந்த நடத்தையை விளக்குகிறது.

let arr = Array(9.3) // வரம்பு பிழை: தவறான வரிசை நீளம்

குறிமுறைவரிகள் தன்னிச்சையான தரவு வகையின் ஒற்றை உறுப்புகளுடன் அணிவரிசைகளை உருவாக்க வேண்டும் எனில், அணிவரிசை எழுத்துகளைப் பயன்படுத்துவது பாதுகாப்பானது. மாற்றாக, அதில் ஒற்றை உறுப்பைச் சேர்ப்பதற்கு முன் முதலில் ஒரு வெற்று அணிவரிசையை உருவாக்கிடுக. ES2015 இல், ஒற்றை உறுப்புடன் அணிகளை உருவாக்க the Array.of static எனும் வழிமுறையைப் பயன்படுத்தலாம்.

wisenArray = Array.of(9.3) // wisen Array இல் 9.3 என்ற ஒரு உறுப்பு மட்டுமே உள்ளது

அணிவரிசை உறுப்புகளை மேற்கோள் செய்தல்

உறுப்புகளும் பண்புகளாக இருப்பதால், பண்பியல்பு அணுகல்களைப் பயன்படுத்தி அணுகலாம். பின்வரும் அணிவரிசையை வரையறுப்பதாக கொள்க:

let myArray = ['Wind', 'Rain', 'Fire']

வரிசையின் முதல் உறுப்பை as myArray[0], வரிசையின் இரண்டாவது உறுப்பு myArray[1], முதலியவற்றைக் குறிப்பிடலாம்… தனியுறுப்புகளின் குறிமுறைவரி பூஜ்ஜியத்தில் தொடங்குகிறது.

குறிப்பு: ஒரு பொருளைப் போன்றே வரிசையின் பிற பண்பியல்புகளை அணுக பண்பியல்பு அணுகல்களையும் பயன்படுத்தலாம்.

let arr = ['one', 'two', 'three']

arr[2] // three

arr['length'] // 3

  1. ஒரு அணியை பெருக்குதல்(Populating)
  2. அதன் உறுப்புகளுக்கு மதிப்புகளை ஒதுக்குவதன் மூலம் ஒரு அணிவரிசையை விரிவுபடுத்தலாம். எடுத்துக்காட்டாக:

let emp = []

emp[0] = 'Casey Jones'

emp[1] = 'Phil Lesh'

emp[2] = 'August West'

குறிப்பு:மேலே உள்ள குறிமுறைவரிகளில் உள்ள அணிவரிசை இயக்குபவருக்கு முழு எண் அல்லாத மதிப்பை வழங்கினால், அணிவரிசை உறுப்புக்கு பதிலாக, அணிவரிசையைக் குறிக்கும் பொருளில் ஒரு பண்பியில்பு உருவாக்கப்படும்.

let arr = []

arr[3.4] = 'Oranges'

console.log(arr.length) // 0

console.log(arr.hasOwnProperty(3.4)) // true

You can also populate an array when you create it:

let myArray = new Array('Hello', myVar, 3.14159)

// OR

let myArray = ['Mango', 'Apple', 'Orange']

நீளத்தைப் புரிந்துகொள்வது

செயல்படுத்திடும் மட்டத்தில், ஜாவாஉரைநிரலின் அணிவரிசைகள் அவற்றின் கூறுகளை நிலையான பொருளின் பண்புகளாக சேமிக்கின்றன, அணிவரிசை குறிமுறைவரிகளை பண்பியல்பு பெயராகப் பயன்படுத்துகின்றன. நீளம் சிறப்பு வாய்ந்தது. இது எப்போதும் கடைசி உறுப்பின் கூடுதல் 1 எனும் குறியீட்டை வழங்கும். (பின்வருாறான எடுத்துக்காட்டில்,’Dusty’s indexed at30, socats.lengthreturns30 + 1). ஜாவாஉரைநிரல் அணிவரிசை குறியீடுகள் 0-அடிப்படையிலானவை என்பதை நினைவில் கொள்க: அவை 0அன்று, 1 இல் தொடங்குகின்றன. இதன் பொருள், வரிசையில் சேமித்து வைக்கப்பட்டுள்ள மிக உயர்ந்த குறிமுறை வரிகளை விட நீளமான பண்பியல்பு ஒன்று அதிகமாக இருக்கும்:

let cats = []

cats[30] = ['Dusty']

console.log(cats.length) // 31

இதற்கு நீளம் எனும் பண்பியில்பை ஒதுக்க முடியும். சேமிக்கப்பட்ட பொருட்களின் எண்ணிக்கையை விட குறைவான மதிப்பை எழுதுவது அணிவரிசையை துண்டிக்கிறது. எழுதுவது அதை முழுவதுமாக காலி செய்கிறது:

let cats = ['Dusty', 'Misty', 'Twiggy']

console.log(cats.length) // 3

cats.length = 2

console.log(cats) // logs "Dusty, Misty" - Twiggy has been removed

cats.length = 0

console.log(cats) // logs []; the cats array is empty

cats.length = 3

console.log(cats) // logs [ <3 empty items> ]

அணிவரிசைகள் மீது மீண்டும் மீண்டும்செய்தல் ஒரு பொதுவான செயலியானது, ஒரு அணிவரிசையின் மதிப்புகளை மீண்டும் மீண்டும் செய்வதாகும், ஒவ்வொன்றையும் ஏதோ ஒரு வகையில் செயலாக்குவதாகும். இதைச் செய்வதற்கான எளிய வழி பின்வருமாறு:

let colors = ['red', 'green', 'blue']

for (let i = 0; i < colors.length; i++) {

console.log(colors[i])

}

அணிவரிசையில் உள்ள எந்த உறுப்புகளும் பூலியன் சூழலில் தவறானவை என மதிப்பிடவில்லை , எடுத்துக்காட்டாக, அணியில் DOM முனைமங்கள் மட்டுமே இருந்தால், மிகவும் திறமையான சொற்றொடரைப் பயன்படுத்தலாம்:

let divs = document.getElementsByTagName('div')

for (let i = 0, div; div = divs[i]; i++) {

/* Process div in some way */

}

இது அணிவரிசையின் நீளத்தைச் சரிபார்ப்பதற்கான மேல்நிலையைத் தவிர்க்கிறது, மேலும் கூடுதல் வசதிக்காக ஒவ்வொரு முறையும் மடக்கியை சுற்றிலும் தற்போதைய உருப்படிக்கு div எனும்மாறி மீண்டும் ஒதுக்கப்படுவதை உறுதி செய்கிறது. forEach() எனும் வழிமுறையானது ஒரு அணிவரிசையின் மீது மீண்டும் மீண்டும் செய்யும் மற்றொரு வழிமுறையை வழங்குகிறது:

let colors = ['red', 'green', 'blue']

colors.forEach(function(color) {

console.log(color)

})

// red

// green

// blue

மாற்றாக, ஒவ்வொரு அளவுருவுக்கான குறியீட்டை ES2015 அம்பு செயலிகளுடன் சுருக்கியமைத்திடலாம்:

let colors = ['red', 'green', 'blue']

colors.forEach(color => console.log(color))

// red

// green

// blue

ஒவ்வொருவருக்கும் அனுப்பப்பட்ட செயலி, அணிவரிசையில் உள்ள ஒவ்வொரு உருப்படிக்கும் ஒரு முறை செயல்படுத்தப்படுகிறது, அணிவரிசை உருப்படி செயல்பாட்டிற்குதருக்கமாக அனுப்பப்படுகிறது. ஒதுக்கப்படாத மதிப்புகள் ஒவ்வொரு மடக்கியிலும் மீண்டும் செய்யப்படவில்லை. அணிவரிசை வரையறுக்கப்படும் போது தவிர்க்கப்படும் அணிவரிசையின் கூறுகள் ஒவ்வொன்றிற்கும் மீண்டும் மீண்டும் செய்யும் போது பட்டியலிடப்படாது, ஆனால் வரையறுக்கப்படாத உறுப்புக்கு கைமுறையாக ஒதுக்கப்படும் போது பட்டியலிடப்படும்

let array = ['first', 'second', , 'fourth']

array.forEach(function(element) {

console.log(element)

})

// முதலாவது

// இரண்டாவது

// நான்காவது

if (array[2] === undefined) {

console.log('array[2] is undefined') // true

}

array = ['first', 'second', undefined, 'fourth']

array.forEach(function(element) {

console.log(element)

})

// முதலாவது

// இரண்டாவது

// வரையறுக்கப்படாதது

// நான்காவது

ஜாவாஉரைநிரலின் கூறுகள் நிலையான பொருள் பண்புகளாகச் சேமிக்கப்பட்டதால், ஜாவாஉரைநிரலின் அணிவரிசைகளின் மூலம்... for…inஎனும் மடக்கிகளைப் பயன்படுத்தி மீண்டும் மீண்டும் செய்வது நல்லதன்று, ஏனெனில் சாதாரண உறுப்புகள் , அனைத்து எண்ணிடக்கூடிய பண்புகள் பட்டியலிடப்படும்.

ணிவரிசை முறைகள்

அணிவரிசையின் பொருள் பின்வரும் வழிமுறைகளைக் கொண்டுள்ளது: concat() இரண்டு அல்லது அதற்கு மேற்பட்ட அணிவரிசைகளை இணைத்து புதிய அணிவரிசையை வழங்குகிறது.

let myArray = new Array('1', '2', '3')

myArray = myArray.concat('a', 'b', 'c')

// myArrayஆனது இப்போது ["1", "2", "3", "a", "b", "c"] என்றாகின்றது

join(delimiter = ‘,’) இது ஒரு வரிசையின் அனைத்து கூறுகளையும் ஒரு சரத்தில் இணைக்கிறது

let myArray = new Array('Wind', 'Rain', 'Fire')

let list = myArray.join(' - ') // பட்டியலானது "Wind - Rain – Fire" ஆகும்

push() என்பது ஒரு வரிசையின் முடிவில் ஒன்று அல்லது அதற்கு மேற்பட்ட கூறுகளைச் சேர்த்து, அதன் விளைவாக வரும் வரிசையின் நீளத்தை வழங்குகிறது.

let myArray = new Array('1', '2')

myArray.push('3') // myArray ஆனது இப்போது ["1", "2", "3"] என்றாகின்றது

pop() என்பது ஒரு அணிவரிசையிலிருந்து கடைசி உறுப்பை நீக்கி, அந்த உறுப்பைத் தருகிறது.

let myArray = new Array('1', '2', '3')

let last = myArray.pop()

// myArrayஆனது இப்போது ["1", "2"] என ஆகின்றது, கடைசி எண் = "3" ஆகும்

shift() அணிவரிசையில் இருந்து முதல் உறுப்பை நீக்கி, அந்த உறுப்பைத் தருகிறது.

let myArray = new Array('1', '2', '3')

let first = myArray.shift()

// myArrayஆனது இப்போது ["2", "3" ]என ஆகின்றது , முதல் எண் "1" ஆகும்

unshift() எனபது அணிவரிசையின் முன்பக்கத்தில் ஒன்று அல்லது அதற்கு மேற்பட்ட கூறுகளைச் சேர்த்து, அணிவரிசைக்கு புதிய நீளத்தை வழங்குகிறது.

let myArray = new Array('1', '2', '3')

myArray.unshift('4', '5')

// myArray ஆனது["4", "5", "1", "2", "3"] என மாறுகின்றது

slice(start_index, up_to_index) இது அணிவரிசையின் ஒரு பகுதியை பிரித்தெடுத்து புதிய அணிவரிசையை வழங்குகிறது.

let myArray = new Array('a', 'b', 'c', 'd', 'e')

myArray = myArray.slice(1, 4) // starts at index 1 and extracts all elements

// until index 3, returning [ "b", "c", "d"]

splice(index, count_to_remove, addElement1, addElement2, ...) இது ஒரு வரிசையிலிருந்து உறுப்புகளை நீக்கி (விரும்பினால்) அவற்றை மாற்றுகிறது. இது வரிசையிலிருந்து அகற்றப்பட்ட உருப்படிகளைத் திருப்பித் தருகிறது.

let myArray = new Array('1', '2', '3', '4', '5')

myArray.splice(1, 3, 'a', 'b', 'c', 'd')

// இப்போது myArray ஆனது["1", "a", "b", "c", "d", "5"] ஆகும்

// இதில் சுட்டிரிசை 1 இல் துவங்குகின்றது (அல்லது "2" இல் துவங்குகின்றது),

// 3 உறுப்புகளையும் நீக்கிவிடுகின்றது பின்னர் அவ்விடத்தில்தொடர்ச்சியான 3

//உறுப்புகளையும் உள்செருகுகின்றது

reverse() ஒரு அணிவரிசையின் உறுப்புகளை இடமாற்றம் செய்கிறது: முதல் வரிசை உறுப்பு கடைசியாக மாறும் மற்றும் கடைசியானது முதல் ஆகிறது. இது வரிசைக்கு ஒரு குறிப்பை வழங்குகிறது.

let myArray = new Array('1', '2', '3')

myArray.reverse()

// அணிஉறுப்புகளை இடமாற்றுகின்றது அதனால் myArray = ["3", "2", "1"]ஆகும்

தொடரும்

துவக்க நிலையாளர்களுக்கான இராஸ்பெர்ரி பை வழிகாட்டி- தொடர் -8. செயல்திட்டம் 3: வில்விளையாட்டு-3

இப்போது நாம்Scratchஎனும் கணினிமொழியில் நிபுணராகிவிட்டோமல்லவா, இன்னும் கொஞ்சம் சவாலான ஒன்றைச் செய்ய வேண்டிய நேரம் இது: அதற்கான வில்லுடனான விளையாட்டினை விளையாடிடுவோம், இதில் வில் வீரரானவர் அசையும் வில் அம்பு ஆகியவற்றின் மூலம் தோராயமாக இலக்கைத் தாக்க வேண்டும்.

இந்த செயல்திட்டமானது rpf.io/archery எனும் இணையமுகவரியில் கிடைக்கிறது

முதலில் Chromium இணைய உலாவியைத் திறந்து, ENTER விசையை அழுத்து வதைத் தொடர்ந்து rpf.io/p/en/archery-go என தட்டச்சு செய்வதன் மூலம் இந்த செயல் திட்டத்தினை தொடங்கிடுக. விளையாட்டிற்கான ஆதாரங்கள் சுருக்கப்பட்ட (zip) கோப்பாக பதிவிறக்கம் செய்யப்படுவதால், அதை பிரிக்க (unzipசெய்ய) வேண்டி யிருக்கும் (அதனால் அதன்மீது இடம்சுட்டியை வைத்து சுட்டியின் வலதுபுற பொத்தானை தெரிவுசெய்து சொடுக்குக உடன்விரியும் சூழ்நிலை பட்டியில் select Extract Here. என்பதைதெரிவுசெய்து சொடுக்குக. மீண்டும் Scratch3 இற்கு மாறிச்சென்று, Fileஎனும் பட்டியை சொடுக்குக.தொடர்ந்து விரியும் திரையில்'‘Load from your computer' என்பதை சொடுக்குக. பிறகு ArcheryResources.sb3 ஐ தெரிவுசெய்து சொடுக்குக தொடர்ந்து Openஎனும் பொத்தானை சொடுக்குக . உடன் நம்முடைய தற்போதைய செயல் திட்டப்பணியின் உள்ளடக்கங்களை மாற்ற வேண்டுமா எனக் கோரும்: மாற்றங்களை சேமிக்கவில்லை என்றால், Cancel என்பதைக் சொடுக்குதல் செய்து சேமித்திடுக, இல்லையெனில்OK. எனும் பொத்தானை சொடுக்குக

படம்-1

நாம் இப்போது பதிவேற்றிய செயல்திட்டத்தில் ஒருbackdrop உம் ஒரு sprite உம் உள்ளன (படம் 1) , ஆனால் விளையாட்டை உருவாக்குவதற்கான உண்மை யான குறிமுறைவரிகள் எதுவும் இல்லை: அதைச் சேர்ப்பது நம்முடைய பணியாகும். அதற்காக when clicked எனும் தொகுதியை சேர்ப்பதன் மூலம் தொடங்கிடுக, பின்னர் broadcast message1எனும் ஒருதொகுதியையும் சேர்த்திடுக. இந்த தொகுதியின் முடிவில் உள்ள கீழ்நோக்கு அம்புக்குறியை சொடுக்குதல் செய்த பின்னர் 'New Message என்பதை சொடுக்குக, அதனை தொடர்ந்து OK எனும் பொத்தானை சொடுக்குதல்செய்வதற்கு முன் 'new arrow' என தட்டச்சு செய்க. நம்முடைய தொகுதி இப்போது broadcast new arrow .என்பதை படிக்கிறது.

படம்-2

ஒளிபரப்பு என்பது நம்முடைய நிரலின் ஒரு பகுதியிலிருந்து வருகின்ற செய்தியாகும், அதை நிரலின் மற்ற எந்தப் பகுதியிலிருந்தும் பெறலாம். அது உண்மையில் ஏதாவது செய்ய, when I receive message1 எனும் ஒரு தொகுதியைச் சேர்த்து,அதை when I receive new arrow என மீண்டும் படிக்குமாறு மாற்றிடுக. இந்த நேரத்தில் கீழ்நோக்கு அம்புக்குறியை சொடுக்குதல் செய்து, பட்டியலில் இருந்து 'new arrow' என்பதைத் தேர்ந்தெடுக்கலாம்; மீண்டும் செய்தியை உருவாக்க வேண்டியதில்லை.

when I receive new arrow எனும் நம்முடைய தொகுதியின் கீழ்பகுதியில்go to x: -150 y: -150 எனும் ஒருதொகுதியை சேர்த்திடுக மேலும் set size to 400 %. எனும் ஒருதொகுதியையும் சேர்த்திடுக இவை அந்தத் தொகுதிகளுக்கான இயல்புநிலை மதிப்புகள் அல்ல என்பதை நினைவில் கொள்க, எனவே அவற்றை குறிமுறை வரிகளின் பகுதிக்கு இழுத்துசென்றவுடன் அவற்றை மாற்ற வேண்டும். நாம் இதுவரை என்ன செய்துள்ளோம் என்பதைகாண பச்சைவண்ணக் கொடியை சொடுக்குக:உடன் இலக்கைக் குறிவைக்க வீரர் பயன்படுத்துகின்ற அம்புக்குறி உருவமானது, மேடையின் கீழ-இடதுபுறம் குதித்து நான்கு மடங்கு அளவு அதிகரித்து விரிின்றது.

படம்-3

வில்லாளருக்கு ஒரு சவாலை வழங்க, வில் வரையப்பட்டபோதும், வில்லாளர் நோக்கும்போதும் அசைவதை உருவகப்படுத்துகின்ற இயக்கத்தைச் சேர்க்க வேண்டும். அதற்காக foreverஎனும் ஒரு தொகுதியை இழுத்து சென்றுவிட்டிடுக, அதைத் தொடர்ந்துglide 1 seconds to x: -150 y: -150 எனும் ஒரு தொகுதியை இழுத்து சென்றுவிட்டிடுக,. முதல் வெள்ளைப் பெட்டியைத்1’என்பதற்குப் பதிலாக ‘0.5’ என திருத்திடுக, பின்னர் மற்ற இரண்டு வெள்ளைப்பெட்டிகளில் ஒவ்வொன்றிலும் pick random -150 to 150எனும் இயக்கிகளின் தொகுதியை அமைத்திடு. இதன் பொருள், அம்பு மேடையைச் சுற்றி சீரற்ற திசையில், சீரற்ற தூரத்திற்குச் செல்லும் - இலக்கைத் தாக்குவது மிகவும் கடினமாக இருக்கும்!

படம்-4

பச்சைவண்ணக் கொடியை மீண்டும் சொடுக்குதல் செய்,உடன் அந்தத் தொகுதி என்ன செய்கிறது என்பதை காணலாம்: அம்புக்குறி sprite ஆனது இப்போது வெவ்வேறு பகுதிகளை உள்ளடக்கிய இலக்கை நோக்கி மேடையைச் சுற்றிச் செல்கின்றது, இந்த நேரத்தில், இலக்கில் உள்ள அம்புக்குறியை இழக்க வழி இல்லை. when space key pressed எனும் தொகுதியை குறிமுறைவரிகளின் பகுதியில் இழுத்துசெல்க, அதைத் தொடர்ந்து stop allஎனும்கட்டுப்பாட்டு தொகுதியை குறிமுறைவரிகளின் பகுதியில் இழுத்துசெல்க, இந்த தொகுதியின் முடிவில் உள்ள கீழ்நோக்கு அம்புக்குறியைசொடுக்குதல் செய்து, stop other scripts in sprite எனும் தொகுதியை மாற்றியமைத்திடுக.

படம்-5

புதிய தொகுதிகளைச் சேர்க்க நிரலை நிறுத்தம்செய்திருந்தால், அதை மீண்டும் தொடங்க பச்சைவண்ணக் கொடியைசொடுக்குதல்செய்து, SPACEஎனும் விசையை அழுத்துக:உடன் spriteஎனும் அம்புக்குறி நகர்வதையும் நிற்பதையும் காணலாம். இது ஒரு தொடக்கம் மட்டுமே, ஆனால் இலக்கை நோக்கி அம்பு பறப்பது போன்று தோற்றமளிக்க வேண்டும் அல்லவா . அதற்காக repeat 50எனும்தொகுதியைச் சேர்த்திடுக, அதைத் தொடர்ந்துchange size by -10,எனும் தொகுதியை சேர்த்திடுக பின்னர் நம்முடைய விளையாட்டினை மீண்டும் சரிபார்த்திடுவதற்காக பச்சை வண்ணக் கொடியை சொடுக்குதல்செய்க. இந்த நேரத்தில், அம்பு நம்மிடமிருந்து விலகி இலக்கை நோக்கி பறப்பது போன்று தோன்றுகிறதல்லவா.

படம்-6

விளையாட்டை வேடிக்கையாக மாற்ற, வெற்றிகளுக்கான புள்ளியை வைத்திருக்க ஒரு வழியைச் சேர்க்க வேண்டும்.அதற்காக அதே தொகுதிகளில், ஒரு if then எனும் ஒரு தொகுதியைச் சேர்த்திடுக, மேலும touching color?எனும் தொகுதியானது அதன் உள்ளே இல்லாமல் repeat 50எனும் தொகுதிக்கு கீழே இருப்பதையும் உறுதி செய்துகொள்க , அதன் வைர வடிவ இடைவெளியில் உணர்திறன் தொகுதியின். சரியான நிறத்தைத் தேர்வுசெய்ய, Sensingஎனும் தொகுதியின் முடிவில் உள்ள வண்ணப் பெட்டியை சொடுக்குக, பின்னர் eye-dropper எனும் உருவப்பொத்தானை சொடுக்குக, அதன்பின்னர் மேடையில் இலக்கின் மஞ்சள் காளையின் கண் மீது இடம்சுட்டியை வைத்து சொடுக்குக.

படம்-7

விளையாடுபவர் தாங்கள் வெற்றிபெற்றதை அறிந்துகொள்ள, if then எனும் ஒரு தொகுதிக்குள் start sound cheerஎனும் தொகுதியை சேர்த்திடுக,தொடர்ந்து say 200 points for 2 seconds. எனும் தொகுதியை சேர்த்திடுக

இறுதியாக, விளையாடுபவர் ஒவ்வொரு முறையும் ஒரு அம்புக்குறியை வீசும்போது மற்றொரு அம்புக்குறியைக் கொடுப்பதற்காக, தொகுதி அடுக்கின் அடிப்பகுதியில், if then எனும் ஒரு தொகுதிக்குக்கு கீழேயும் வெளியேயும் ஒரு broadcast new arrow எனும் தொகுதியை சேர்த்திடுக மஞ்சள்வண்ண காளையின் கண்ணைத் தாக்க முயற்சித்திடு: அதைச் செய்யும்போது, கூட்டத்தின் உற்சாகமும் 200-புள்ளி மதிப்பெண்ணும் வெகுமதி அளிக்கப்படும்!

படம்-8

இந்த விளையாட்டுசரியாக செயல்படுகின்றது, ஆனால் கொஞ்சம் சவாலானது. இந்த பகுதியில் கற்றுக்கொண்டதைப் பயன்படுத்தி, காளையின் கண்களைத் தவிர வேறு சில பகுதிகளின் இலக்கத் தாக்கும் மதிப்பெண்களைச் சேர்க்க அதை நீட்டிக்க முயற்சித்திடுக: சிவப்பு வண்ணத்திற்கு 100 புள்ளிகள், நீலவண்ணத்திற்கு 50 புள்ளிகள் என்றவாறு மற்ற வண்ணங்களுக்கான புள்ளிகளை நிர்ணயத்திடுக.

சவால்: இந்த விளையாட்டினை மேம்படுத்த முடியுமா? இந்த விளையாட்டை எவ்வாறு எளிதாக்குவது? அதை எப்படி கடினமாக்குவது? அதிக அம்புகளை வீசுவதால், விளையாட்டு வீரரின் வெற்றிபுள்ளிகளை அதிகரிக்க, மாறிகளைப் பயன்படுத்த முடியுமா? விளையாடுபவருக்கு அதிக அழுத்தம் கொடுக்க countdown எனும் நேரங்காட்டியைச் சேர்க்க முடியுமா?

தொடரும்.

ஜாவாஉரைநிரல் பயிற்சிவழிகாட்டி தொடர்-15.உரையை வடிவமைத்தல்-6

       

இந்த பகுதி ஜாவாஉரைநிரலில் சரங்களுடனும் உரையுடனும் எவ்வாறு பணிபுரிவது என்பதை அறிமுகப்படுத்துகிறது.
சரங்கள்(Strings)
ஜாவா உரைநிரலில் பொதுவாக Stringtype என்பதை உரைவடிவிலானத் தரவைக் குறிக்கப் பயன்படுகின்றன. இது 16-பிட் கையொப்பமிடப்படாத முழு எண் மதிப்புகளின் (UTF-16 குறியீட்டு அலகுகள்) “உறுப்புகளின்” தொகுப்பாகும். சரத்தில் உள்ள ஒவ்வொரு உறுப்பும் சரத்தில் ஒரு நிலையைப்(Position) பெறுகிறது. முதல் உறுப்பின் நிலைச்சுட்டி( index) 0 ஆகும், அடுத்ததின் நிலைச்சுட்டி(index) 1ஆகும், என்றவாறு பின்வருபவைகளின் நிலைச்சுட்டிகள்( index) அமைந்திருக்கும். ஒரு சரத்தின் நீளம் என்பது அதில் உள்ள உறுப்புகளின் எண்ணிக்கைகளாகும். சரத்தின்எழுத்துகளை அல்லது சரத்தின்பொருட்களைப் பயன்படுத்தி சரங்களை உருவாக்கலாம்.
சரத்தின்எழுத்துக்கள்(String literals)
ஒற்றை அல்லது இரட்டை மேற்கோள்களைப் பயன்படுத்தி எளிய சரங்களை உருவாக்கலாம்:
‘foo’ “bar”
விடுபடும்வரிசைமுறைகளைப் பயன்படுத்தி மேலும் மேம்பட்ட சரங்களை உருவாக்கலாம்:
பதினாறிலக்கமுறை எண்ணின் விடுபடும் வரிசைமுறைகள்
\x என்பதற்குப் பின் வரும் எண்ணானது பதினாறிலக்கமுறை( hexadecimal) என விளக்கமளிக்கப்படுகிறது.
‘\xA9’ // “©”
ஒருங்குகுறியில் விடுபடும் வரிசைமுறைகள்
ஒருங்குகுறி விடுபடும் வரிசைமுறைகளுக்கு குறைந்தபட்சம் நான்கு பதினாறிலக்கமுறை எண்ணிமங்கள் தேவையாகும்
\u. ‘\u00A9’ // “©”
ஒருங்குகுறியில் விடுபடும் புள்ளி
புதிய ECMAScript 2015 என்பது . ஒருங்குகுறியீட்டு குறிமுறைவரிகளின் புள்ளிகளின் மூலம், பதினாறிலக்க எண்களைப் பயன்படுத்தி எந்த எழுத்துருவையும் விடுபடச் செய்யமுடியும், இதனால் 0x10FFFF வரை ஒருங்குகுறியீ்ட்டு குறிமுறைவரிகளின் புள்ளிகளைப் பயன்படுத்த முடியும். எளிய ஒருங்குகுறி விடுபடுதல்களின் மூலம், அதே முடிவை அடைய, பினாமி (surrogate) பகுதிகளை தனித்தனியாக எழுதுவது அவசியமாகும்.
‘\u{2F804}’
// எளிய ஒருங்குகுறி விடுபடும் அதேபுள்ளி
‘\uD87E\uDC04’
சரத்தின் பொருட்கள்(Stringobject)
சரத்தின் பொருட்கள்(Stringobject) என்பது சரத்தின் மூலத்தரவு வகையைச் சுற்றிய ஒரு மேலட்டையாகும்.
const foo = new String(‘foo’); // ஒரு சரத்தின் பொருளை உருவாக்குகிறது
console.log(foo); // காட்சியளிக்கின்றது: : [String: ‘foo’]
typeof foo; // ‘பொருளை’ திருப்புகிறது
இந்த சரத்தின் பொருட்களின்(Stringobject) எந்த வழிமுறைகளையும் ஒரு சரத்தின் நேரடி மதிப்பில் அழைக்கலாம் – ஜாவாஉரைநிரலானது தானாகவே சரத்தை ஒரு தற்காலிக சரத்தின் பொருளாக மாற்றி அதற்கான வழிமுறையை அழைக்கிறது, பின்னர் தற்காலிக சரத்தின் பொருளை நிராகரிக்கிறது. இதற்காக String.lengthproperty ஐ ஒரு சரத்துடன் பயன்படுத்திகொள்ளலாம். குறிப்பாக ஒரு சரத்தின் பொருளைப்பயன்படுத்த வேண்டிய அவசியமில்லை எனில், சரஎழுத்துக்களைப் பயன்படுத்த வேண்டும், ஏனெனில் சரத்தின் பொருட்கள் எதிர்மறையான நடத்தையைக் கொண்டிருக்கலாம். எடுத்துகாட்டாக:
const firstString = ‘2 + 2’; // ஒரு சரத்தின் நேரடி மதிப்பை உருவாக்குகிறது
const secondString = new String(‘2 + 2’); // ஒரு சரத்தின் பொருளை உருவாக்குகிறது
eval(firstString); // எண் 4 ஐ திருப்புகிறது
eval (secondString); // “2 + 2” கொண்ட சரத்தின் பொருளை வழங்குகிறது
ஒரு சரத்தின் பொருளானது(Stringobject) சரத்தில் உள்ள UTF-16 குறியீட்டு அலகுகளின் எண்ணிக்கையைக் குறிக்கின்ற ஒரு பண்பியல்பையும், நீளத்தினையும் கொண்டது. எடுத்துக்காட்டாக, பின்வரும் குறிமுறைவரியில் helloஎன்பதன் நீளத்திற்காக 13 மதிப்பை ஒதுக்குகிறது, ஏனெனில் “Hello, World!” இல் 13 எழுத்துகள் உள்ளன, ஒவ்வொன்றும் ஒரு UTF-16 குறியீட்டு அலகு மூலம் குறிப்பிடப் படுகின்றன. வரிசை அடைப்புக்குறி பாணியைப் பயன்படுத்தி ஒவ்வொரு குறியீட்டு அலகுகளையும் அணுகலாம். தனிப்பட்ட எழுத்துகளை மாற்ற முடியாது, ஏனெனில் சரங்கள் மாறாத அணிவரிசை போன்ற பொருட்களாகும்:
const hello = ‘Hello, World!’;
const helloLength = hello.length;
hello[0] = ‘L’;//இதில் பாதிப்பெதுவும் இல்லை ஏனெனில் சரமானவை மாறாதவை
hello[0]; // இது “H” என்பதை திருப்புகின்றது
ஒருங்குகுறி அளவுகோல் மதிப்புகள் U+FFFF ஐ விட அதிகமாக உள்ள எழுத்துக்கள் (சில அரிய சீன/ஜப்பானிய/கொரிய/வியட்நாமிய எழுத்துக்கள் , சில எமோஜி போன்றவை) UTF-16 இல் இரண்டு பினாமி(surrogate)குறிமுறைவரி அலகுகளுடன் சேமிக்கப்படும். எடுத்துக்காட்டாக, U+1F600 “Emoji grinning face” என்ற ஒற்றை எழுத்து கொண்ட ஒரு சரத்தின் நீளம் 2 ஆக இருக்கும். அடைப்புக்குறிகளைப் பயன்படுத்தி அத்தகைய சரத்தில் உள்ள தனிப்பட்ட குறியீட்டு அலகுகளை அணுகுவது, ஒருங்குகுறி செந்தரத்தை மீறுதல். பொருந்தாத பினாமி(surrogate) குறிமுறைவரி அலகுகளுடன் சரங்களை உருவாக்குlnd போன்ற விரும்பத்தகாத விளைவுகளை ஏற்படுத்தலாம். (MDN பிழை 857438 சரி செய்யப்பட்ட பிறகு எடுத்துக்காட்டுகள் இந்தப் பக்கத்தில் சேர்க்கப்பட வேண்டும்.) ஒரு சரத்தின் பொருள் பல்வேறு வழிமுறைகளைக் கொண்டுள்ளது: எடுத்துக்காட்டாக, துனைச்சரம் ,பெரியஎழுத்துசரம்போன்ற சரத்திலேயே வேறுபாடுகளை வழங்குகின்றது. பின்வரும் அட்டவணை சரத்தின் பொருட்களின்(Stringobjects) வழிமுறைகளை சுருக்கமாகக் கூறுகிறது.
அட்டவணை – சரத்தின் வழிமுறைகள்

வழிமுறைவிளக்கம்
charAt,charCodeAt,codePointAtஎழுத்து அல்லது எழுத்துக் குறியீட்டை சரத்தில் குறிப்பிட்ட நிலையில் திருப்பி அனுப்புகின்றது.
indexOf,lastIndexOfசரத்தில் குறிப்பிடப்பட்ட துணைச்சரத்தின் நிலை அல்லது குறிப்பிட்ட துணைச்சரத்தின் கடைசி நிலை முறையே திருப்புகின்றது.
startsWith,endsWith,includesசரம் தொடங்கினாலும், முடிவடைந்தாலும் அல்லது குறிப்பிடப்பட்ட சரம் உள்ளதா இல்லையா என்பதை வழங்குகின்றது
concatஇரண்டு சரங்களின் உரையை ஒருங்கி ணைத்து புதிய சரத்தை வழங்குகின்றது
fromCharCode,fromCodePointஒருங்குகுறி மதிப்புகளின் குறிப்பிட்ட வரிசையிலிருந்து ஒரு சரத்தை உருவாக்கு கிறது. இது சர இனத்தின் ஒரு முறையாகும், ஒரு சரத்தின் நிகழ்வு அன்று.
splitசரத்தை துணை சரங்களாகப் பிரிப்பதன் மூலம் ஒரு சரத்தின் பொருளானது சரங்களை வரிசையாகப் பிரிக்கிறது.
sliceசரத்தின் ஒரு பகுதியை பிரித்தெடுத்து புதிய சரத்தை வழங்குகின்றது
substring,substrதொடக்க, முடிவு சுட்டிகள் அல்லது தொடக்க அட்டவணை, நீளம் ஆகியவற்றைக் குறிப்பிடுவதன் மூலம் சரத்தின் குறிப்பிட்ட துணைக்குழுவைத் திருப்பி அனுப்புகின்றது. வழக்கமான வெளிப்பாடுகளுடன் வேலை செய்யுங்கள்.
match,matchAll,replace,replaceAll,searchவழக்கமான வெளிப்பாடுகளுடன்செயல்படுக
toLowerCase,toUpperCaseசரத்தின் அனைத்தையும் சிறிய எழுத்தாக அல்லது பெரிய எழுத்தாக திருப்புகின்றது
normalizeஅழைப்பு சர மதிப்பின் ஒருங்குகுறி இயல்பாக்குதல் படிவத்தை வழங்குகின்றது.
repeatகொடுக்கப்பட்ட நேரங்களைத் திரும்பப் பெறும் பொருளின் உறுப்புகளைக் கொண்ட சரத்தை வழங்குகிறது.
trimசரத்தின் துவக்கத்திலிருந்தும் முடிவிலி ருந்தும் காலிஇடைவெளியைக் குறைக்கிறது.

பல வரி மாதிரிபலக எழுத்துக்கள்(Multi-line template literals)
மாதிரிபலக எழுத்துக்களானவை உட்பொதிக்கப்பட்ட வெளிப்பாடுகளை அனுமதிக்கின்ற சரத்தின்எழுத்துக்களாகும். அவற்றுடன் பல வரி சரங்கள், சர இடைக்கணிப்பு வசதிகளைப் பயன்படுத்திகொள்ளலாம்.மாதிரிபலக எழுத்துக்கள் இரட்டை அல்லது ஒற்றை மேற்கோள்களுக்குப் பதிலாக (`) எனும்குறியீட்டு (கடுமையான உச்சரிப்பு) எழுத்துகளால் இணைக்கப்பட்டுள்ளன. மாதிரிபலக எழுத்துக்களில் காலி இடம் ஒதுக்கி வைத்திருக்கலாம். இவை டாலர் குறி , இருதலைகுறியீடுகளால் (${expression}) குறிக்கப்படுகின்றன. பல வரிகள்(Multi-line) மூலத்தில் செருகப்பட்ட எந்த புதிய வரியின் எழுத்துகளும் வார்ப்புருவின் ஒரு பகுதியாகும். சாதாரண சரங்களைப் பயன்படுத்தி, பல வரி சரங்களைப் பெற பின்வரும் தொடரியல் பயன்படுத்த வேண்டும்:

console.log(‘string text line 1\n\ string text line 2’); // “string text line 1 // string text line 2”

பல வரி சரங்களுடன் அதேவிளைவைப் பெறபின்வருமாறுகூட எழுதலாம்:

console.log(string text line 1
string text line 2); // “string text line 1 // string text line 2”

உட்பொதிக்கப்பட்ட வெளிப்பாடுகள்(Embedded expressions) சாதாரண சரங்களுக்குள் வெளிப்பாடுகளை உட்பொதிக்க, பின்வரும் தொடரியலை பயன்படுத்தவேண்டும்:

const five = 5;

const ten = 10;

console.log(‘Fifteen is ‘ + (five + ten) + ‘ and not ‘ + (2 * five + ten) + ‘.’);

// “Fifteen is 15 and not 20.”

இப்போது, மாதிரிபலக எழுத்துக்களின் மூலம், இன்னும் படிக்கக்கூடியது போன்ற தொடரியல்மாற்றீடுகளைப் பயன்படுத்த முடியும்:

const five = 5;

const ten = 10;

console.log(Fifteen is ${five + ten} and not ${2 * five + ten}.`);
// “Fifteen is 15 and not 20.”
ஒரு Int.lobject என்பது ECMAScript இன் உலகளாவிய APIக்கான பெயர் வெளியாகும், இது மொழி உணர்திறன், சரஒப்பீடு, எண் வடிவமைப்பு தேதி நேர வடிவமைப்பு ஆகியவற்றினை வழங்குகிறது. Intl.Collator, Intl.NumberFormat , Intl.DateTimeFormatobject ஆகியவைகளுக்கான கட்டமைப்பாளர்கள் Intlobject இன் பண்பியல்புகளாகும்.
தேதி நேர வடிவமைப்பு
தேதியையும் நேரத்தையும் வடிவமைக்க Intl.DateTimeFormatobject என்பது பயனுள்ளதாக இருக்கும். அமெரிக்காவில் பயன்படுத்தப்படும் ஆங்கிலத்திற்கான தேதியானது பின்வரும் வடிவங்களாகும். (மற்ற நேர மண்டலத்தில் முடிவு வேறுபட்டதாகும்.)
const msPerDay = 24 * 60 * 60 * 1000;
// July 17, 2014 00:00:00 UTC.
const july172014 = new Date(msPerDay * (44 * 365 + 11 + 197));
const options = { year: ‘2-digit’, month: ‘2-digit’, day: ‘2-digit’,
hour: ‘2-digit’, minute: ‘2-digit’, timeZoneName: ‘short’ };
const americanDateTime = new Intl.DateTimeFormat(‘en-US’, options).format;
console.log(americanDateTime(july172014));

// 07/16/14, 5:00 PM PDT
எண் வடிவமைப்பு (NumberFormat)
Intl.NumberFormatobject என்பது எண்களை வடிவமைக்கப் பயன்படுகிறது, எடுத்துகாட்டாக நாணயங்கள்.
const gasPrice = new Intl.NumberFormat(‘en-US’,
{ style: ‘currency’, currency: ‘USD’,
minimumFractionDigits: 3 });
console.log(gasPrice.format(5.259)); // $5.259
const hanDecimalRMBInChina = new Intl.NumberFormat(‘zh-CN-u-nu-hanidec’,
{ style: ‘currency’, currency: ‘CNY’ });
console.log(hanDecimalRMBInChina.format(1314.25)); // ¥ 一,三一四.二五
சேர்த்தல் (Collation)
Intl.Collatorobject என்பது சரங்களை ஒப்பிடுவதற்கும் வரிசையாக அடுக்குவதற்கும் பயனுள்ளதாக இருக்கும். எடுத்துக்காட்டாக, ஜெர்மன், தொலைபேசி புத்தகம், அகராதி ஆகியவற்றில் உண்மையில் இரண்டு வெவ்வேறு வகையான வரிசைகள் உள்ளன. தொலைபேசி புத்தக வரிசைப்படுத்துதல் ஒலியை வலியுறுத்துகிறது, மேலும் இது “ä”, “ö” ,போன்ற பலவற்றை வரிசைப்படுத்து வதற்கு முன்பு “ae”, “oe” போன்ற பலவற்றிற்கு விரிவுபடுத்தியது போலும்.
const names = [‘Hochberg’, ‘Hönigswald’, ‘Holzman’];
const germanPhonebook = new Intl.Collator(‘de-DE-u-co-phonebk’);
// as if sorting [“Hochberg”, “Hoenigswald”, “Holzman”]:
console.log(names.sort(germanPhonebook.compare).join(‘, ‘));
// logs “Hochberg, Hönigswald, Holzman”
சில ஜெர்மன் சொற்கள் கூடுதலாக umlauts என்பதுடன் இணைகின்றன, எனவே அகராதிகளில் umlauts ஐப் புறக்கணித்து வரிசையாக அடுக்குதல் செய்வது விவேகமானது (umlauts:schonbeforeschön என்பதன் மூலம் வேறுபடும் சொற்களை வரிசைப்படுத்துதல்தவிர) .
const germanDictionary = new Intl.Collator(‘de-DE-u-co-dict’);
// as if sorting [“Hochberg”, “Honigswald”, “Holzman”]:
console.log(names.sort(germanDictionary.compare).join(‘, ‘));
// logs “Hochberg, Holzman, Hönigswald”

ஜாவா உரைநிரல் பயிற்சிவழிகாட்டி தொடர்-14 . எண்களும் தேதிகளும் -7

இந்தப்பகுதியில் ஜாவா உரைநிரலில் எண்களையும் தேதிகளையும் பயன்படுத்தி கணக்கீடுகளைச் செய்வதற்குப் பயன்படுத்தப்படும் கருத்துகள், பொருட்கள் செயல்பாடுகள்ஆகியவற்றை அறிமுகப்படுத்துகிறது. இரும,பதின்ம, பதினாறிலக்க உள்ளிட்ட பல்வேறு அடிப்படைகளில் எழுதப்பட்ட எண்களைப் பயன்படுத்துவதும், எண்களில் பலவிதமான கணித செயல்பாடுகளைச் செய்ய உலகளாவிய கணித பொருட்களைப்( Mathobject) பயன்படுத்துவதும் இதில் அடங்கும். எண்கள்(Numbers)
ஜாவாஉரைநிரலில், எண்கள் இரட்டை துல்லியமான 64-துன்மியின் இரும வடிவமைப்பு IEEE 754 (அதாவது, ±2^−1022 , ±2^+1023ஆகியவற்றிற்கு இடைப்பட்ட எண்கள், அல்லது சுமார் ±10^−308 முதல் ±10^+308 வரையிலுள்ள எண்களின் துல்லியம்53 துன்மிகள்(bits)). ±2^53 – 1 வரையிலான முழு எண் மதிப்புகளை சரியாகக் குறிப்பிடலாம். மிதவைப்-புள்ளி எண்களைக் குறிப்பிடுவதுடன், எண் வகைகளானவை +முடிவிலி ,-முடிவிலி, NaN(ஒரு-எண் அன்று). ஆகிய மூன்று குறியீட்டு மதிப்புகளைக் கொண்டுள்ளது:
மீப்பெரும்முழுஎண்(BigInt) என்பது ஜாவாஉரைநிரலில் மிக சமீபத்திய சேர்ந்ததாகும், இது மிகப் பெரியதாக இருக்கும் முழு எண்களைக் குறிக்க அனுமதிக்கிறது. இருப்பினும், BigInt எனும் மீப்பெரும் முழுஎண்ணைப் பயன்படுத்துவதற்கு எச்சரிக்கைகள் உள்ளன; எடுத்துக்காட்டாக, ஒரே செயலியில் BigInt , Number ஆகிய மதிப்புகளை கலந்து பொருத்த முடியாது, மேலும் BigInt மதிப்புடன் Mathobject ஐப் பயன்படுத்த முடியாது. பதின்ம, இரும, எண்ம (octal), பதினாறிலக்க. (hexadecimal )ஆகிய நான்கு வகையான எண்களைப் பயன்படுத்தலாம் .
பதின்ம எண்கள் (Decimal numbers)
1234567890 42 // முன்புறம் பூஜ்ஜியங்களைப் பயன்படுத்தும் போது எச்சரிக்கை:
0888 // 888 பதின்மமாக பாகுபடுத்தப்பட்டது
0777 // கண்டிப்பானநிலையில் எண்மமாக பாகுபடுத்தப்பட்டது (பதின்மத்தில் 511)
குறிப்பு பதின்ம எண்கள் பூஜ்ஜியத்துடன் (0) தொடங்கலாம், அதைத் தொடர்ந்து மற்றொரு பதின்ம இலக்கத்துடன் தொடங்கலாம், ஆனால் முன்புற0இற்குப் பிறகு ஒவ்வொரு இலக்கமும் 8ஐ விட சிறியதாக இருந்தால், அந்த எண் ஆனது எண்ம எண்ணாகப் பாகுபடுத்தப்படும்.
இருமஎண்கள் (Binary numbers)
இரும எண் தொடரியல் ஒரு முன்புறம் பூஜ்ஜியத்தைப் பயன்படுத்துகிறது, அதைத் தொடர்ந்து சிறிய அல்லது பெரிய “B” எனும் இலத்தீன் எழுத்து (0b அல்லது 0B ) என்றவாறு பயன்படுத்தபடுகின்றது . 0 அல்லது 1 க்குப் பின் உள்ள இலக்கங்கள் 0 அல்லது 1 இல்லையெனில், பின்வருமாறான தொடரியல் பிழை(SyntaxError)கிடைக்கின்றது:
“Missing binary digits after 0b”
var FLT_SIGNBIT = 0b100000000000000000000000000; // 2147483648
var FLT_EXPONENT = 0b01111111100000000000000000000; // 2139095040
var FLT_MANTISSA = 0B0000000001111111111111111111111; // 8388607
எண்ம எண்கள் (Octal numbers)
எண்ம எண் ணின்தொடரியலில் முன்புறம் பூஜ்ஜியத்தைப் பயன்படுத்துகிறது. இந்த 0 இற்குப் பின் வரும் இலக்கங்கள் 0 முதல் 7 வரையிலான வரம்பிற்கு வெளியே இருந்தால், அந்த எண் பதிண்ம எண்ணாக அமையும்.
var n = 0755; // 493
var m = 0644; // 420
ECMAScript 5 இல் உள்ள கண்டிப்பான பயன்முறையை எண்ம எண்ணின் தொடரியல் தடை செய்கிறது. எண்ம எண்ணின் தொடரியல் ECMAScript 5 இன் பகுதியாக இல்லை, ஆனால் இது அனைத்து இணைய உலாவிகளிலும் எண்ம எண்ணிற்கு முன்னொட்டாக பூஜ்ஜியம் இருப்பதை ஆதரிக்கின்றது :0644 === 420 ,”\045″ === “%” . ECMAScript 2015 இல், எண்ம எண்கள் 0o உடன் முன்னொட்டாக இருந்தால் அவை ஆதரிக்கப்படும்,
எ.கா: var a = 0o10; // ES2015: 8
பதினாறிலக்க எண்கள் (Hexadecimal numbers)
பதினாறிலக்க எண்ணின் தொடரியலில் முன்புறம் ஒரு பூஜ்ஜியத்தைப் பயன்படுத்துகிறது, அதைத் தொடர்ந்து சிறிய அல்லது பெரிய “X” எனும் இலத்தீன் எழுத்து (0x அல்லது 0X) என்றவாறு பயன்படுத்திடுகின்றது. 0x க்குப் பிறகு உள்ள இலக்கங்கள் வரம்பிற்கு வெளியே (0123456789ABCDEF) என்றவாறு இருந்தால், பின்வரும் தொடரியல் பிழை கிடைக்கின்றது: “Identifier starts immediately after numeric literal”.
. 0xFFFFFFFFFFFFFFF // 295147905179352830000
0x123456789ABCDEF // 81985529216486900
0XA // 10
அடுக்கேற்றல்(Exponentiation)
1E3 // 1000
2e6 // 2000000
0.1e2 // 10
எண்எனும் பொருள் (Number object)
உள்ளமைக்கப்பட்ட எண் எனும்பொருள் அதிகபட்ச மதிப்பு, ஒருஎண் அன்று(NaN), முடிவிலி( infinity) போன்ற எண்ணின் மாறிலிகளுக்கான பண்புகளைக் கொண்டுள்ளது. இந்த பண்புகளின் மதிப்புகளை மாற்ற முடியாது, அவற்றை பின்வருமாறு பயன்படுத்திகொள்ளலாம்:
var bigNum = Number.MAX_VALUE;
var smallestNum = Number.MIN_VALUE;
var infiniteNum = Number.POSITIVE_INFINITY;
var negInfiniteNum = Number.NEGATIVE_INFINITY;
var not ANum = Number.NaN;
மேலே காண்பித்தவாறு, எப்போதும் முன் வரையறுக்கப்பட்ட எண் எனும் பொருளின் பண்பைக் குறிப்பிடுகின்றோம், நாமே உருவாக்கும் எண்எனும் பொருளின் பண்பாக அன்று. பின்வரும் அட்டவணையானது எண்எனும்பொருளின் பண்புகளை சுருக்கமாகக் கூறுகிறது.
அட்டவணை-1

பண்பியல்புகள்விளக்கங்கள்
Number.MAX_VALUEமிகப்பெரிய பிரதிநிதித்துவ எண் (±1.7976931348623157e+308)
Number.MIN_VALUEமிகச்சிறியபிரதிநிதித்துவ எண் (±5e-324)
Number.NaNசிறப்பான “not a number(NaN)” எனும் மதிப்பு
Number.NEGATIVE_INFINITYசிறப்பு எதிர்மறை எல்லையற்ற மதிப்பு; நிரம்பி வழிவது
Number.POSITIVE_INFINITYசிறப்பு நேர்மறை எல்லையற்ற மதிப்பு; நிரம்பி வழிவது
Number.EPSILON1 உம்1 ஐ விடசிறிய மதிப்பிற்கும் இடையேயுள்ள வேறுபடும் எண்ணாகக் குறிப்பிடலாம்(2.220446049250313e-16)
Number.MIN_SAFE_INTEGERஜாவாஉரைநிரலின் சிறியபாதுகாப்பானமுழுஎண் (−2^53 + 1, அல்லது9007199254740991)
Number.MAX_SAFE_INTEGERஜாவாஉரைநிரலின் பெரியபாதுகாப்பானமுழுஎண் (+2^53 − 1, அல்லது+9007199254740991)
Number.parseFloat()உலகளாவிய parseFloat() செயலியை போன்றுஒரு சரம் தருக்கத்தை பாகுபடுத்தி,மிதக்கும் புள்ளி எண்ணை வழங்கும்.
Number.parseInt()ஒரு சரம் தருகத்தை பாகுபடுத்தி, குறிப்பிட்ட ரேடிக்ஸ் அல்லது பேஸில் முழு எண்ணை வழங்கும். உலகளாவிய பாகுபடுத்தும் Int() எனும் செயலி போன்றது.
Number.isFinite()அனுப்பப்பட்ட மதிப்பு வரையறுக்கப்பட்ட எண்ணா என்பதை தீர்மானிக்கிறது.
Number.isInteger()அனுப்பப்பட்ட மதிப்பு முழு எண்ணா என தீர்மானிக்கிறது.
Number.isNaN()அனுப்பப்பட்ட மதிப்பு NaN என்பதை தீர்மானிக்கிறது. அசல் உலகளஅளாவிய மிகவும் வலுவான அசல் NaN()பதிப்பு.
Number.isSafeInteger()வழங்கப்பட்ட மதிப்பு safe integer க உள்ளதா என்பதை தீர்மானிக்கிறது..

எண்ணின் முன்மாதிரியானது( prototype) பல்வேறு வடிவங்களில் உள்ள எண் எனும் பொருட்களிலிருந்து தகவல்களைப் பெறுவதற்கான வழிமுறைகளை வழங்குகிறது. பின்வரும் அட்டவணை Number.prototype இன் வழிமுறைகளை சுருக்கமாகக் கூறுகிறது.
அட்டவணை-2

வழிமுறைவிளக்கங்கள்
toExponential()அடுக்கேற்ற குறியீட்டில் உள்ள ஒரு எண்ணைக் குறிக்கின்ற சரத்தை வழங்குகிறது.
toFixed()நிலையானபுள்ளி குறியீட்டில் உள்ள ஒருஎண்ணைக் குறிக்கின்ற சரத்தை வழங்குகிறது.
toPrecision()நிலையான புள்ளி குறியீட்டில் குறிப்பிட்ட துல்லியத்திற்கு ஒருஎண்ணைக் குறிக்கின்ற சரத்தை வழங்குகிறது.

கணித பொருள்(Math object)
உள்ளமைக்கப்பட்ட கணிதபொருளில் கணித மாறிலிகளும் செயலிகளுக்கான பண்புகளும் வழிமுறைகள் உள்ளன. எடுத்துக்காட்டாக, கணிதப் பொருளின் PI பண்பியல்பு pi (3.141…) எனும்மதிப்பைக் கொண்டுள்ளது, இதை பயன்பாட்டில் பின்வருமாறு பயன்படுத்திகொள்ளலாம்
Math.PI
இதேபோன்று, செந்தர கணித செயலிகள் கணிதத்தின் வழிமுறைகளாகும். இதில் முக்கோணவியல்(trigonometric), மடக்கை(logarithmic), அடுக்குமுறை(exponential,), போன்ற பிற செயலிகளும் அடங்கும். எடுத்துக்காட்டாக, நாம் முக்கோணவியல் செயலியைப் பயன்படுத்த விரும்பினால், பின்வருமாறு எழுதலாம்
Math.sin(1.56)
குறிப்பு ரேடியன்களில் அனைத்து முக்கோணவியல் முறைகளும் Mathtake எனும் தருக்கங்கள் ஆகும் என்பதை நினைவில் கொள்க. பின்வரும் அட்டவணையானது கணித பொருளின் வழிமுறைகளை சுருக்கமாகக் கூறுகிறது.
அட்டவணை-3-கணித முறைகள்

வழிமுறைவிளக்கம்
abs()துல்லியமான மதிப்பு
sin(),cos(),tan()செந்தர trigonometric செயலிகள்; ரேடியன்களின் தருகத்துடன்.
asin(),acos(),atan(),atan2()தலைகீழ் முக்கோணவியல் செயலிகள்; ரேடியன்களில் மதிப்புகளை திருப்புகின்றது.
sinh(),cosh(),tanh()Hyperbolic செயலிகள்; hyperbolicபார்வையில் மதிப்பினை வழங்குகின்றது.
asinh(),acosh(),atanh()தலைகீழ் hyperbolicசெயலிகள்;hyperbolicபார்வையில் மதிப்பினை வழங்குகின்றது.
pow(),exp(),expm1(),log10(),log1p(),log2()அடுக்கேற்ற தருக்க செயலிகள்.
floor(),ceil()ஒரு தருகத்தை விட பெரிய/சிறிய முழு எண்ணை குறைவாக/அதிகமாக அல்லது சமமாக வழங்கும்.
min(),max()கால்புள்ளியால் பிரிக்கப்பட்ட எண்களின் பட்டியலின் சிறிய அல்லதுபெரிய (முறையே) மதிப்பை மதிப்புருக்களாக வழங்கும்.
random()0 , 1 இற்குஇடையில் ஒரு சீரற்ற எண்ணை வழங்குகிறது.
round(),fround(),trunc(),Rounding ,truncation ஆகிய செயலிகள்
sqrt(),cbrt(),hypot()வர்க்கமூலம், கணமூலம் வர்க்க தருக்கங்களின் மொத்தத்திற்கான வர்க்கமூலம்
sign()ஒரு எண் நேர்மறையானதா ,எதிர்மறையானதா அல்லது பூஜ்ஜியமானதா என அதன் குறியீடு குறிக்கின்றது
clz32(),
imul()
32-பிட் இரும பிரதிநிதித்துவத்தில் முன்புற பூஜ்ஜிய பிட்களின் எண்ணிக்கை. இரண்டு தருக்கங்களின் C-போன்ற 32-பிட் பெருக்கதலின் முடிவு.

எச்சரிக்கை:மற்ற பல பொருட்களைப் போன்றில்லாமல், நமக்கென சொந்தமாக ஒரு கணிதப் பொருளை உருவாக்க வேண்டாம். எப்போதும் உள்ளமைக்கப்பட்ட கணிதப் பொருளைமட்டும் பயன்படுத்திகொள்க.
தேதி எனும்பொருள் (Date object)
ஜாவா உரைநிரலில் தேதி எனும் தரவு வகை இல்லை. இருப்பினும், நம்முடைய பயன்பாடுகளில் தேதிகளுடனும் நேரங்களுடனும் செயல்படுத்திடுவதற்காக நாம் தேதி எனும் பொருளையும் அதன் வழிமுறைகளையும் பயன்படுத்தலாம். தேதி எனும் பொருளானது தேதிகளை அமைப்பதற்கும், பெறுவதற்கும் கையாளுவதற்கும் ஏராளமான வழிமுறைகளைக் கொண்டுள்ளது. இது எந்த பண்பியல்புகளையும் கொண்டிருக்கவில்லை. ஜாவாவைப் போலவே ஜாவாஉரைநிரலும் தேதிகளைக் கையாளுகிறது. இரண்டு கணினி மொழிகளும் ஒரே மாதிரியான தேதி வழிமுறைகளைக் கொண்டுள்ளன, மேலும் இரு கணினிமொழிகளும் ஜனவரி 1, 1970, 00:00:00 முதல் மில்லி விநாடிகளின் எண்ணிக்கையில் தேதிகளைச் சேமிக்கின்றன, ஒரு யூனிக்ஸ் Timestamp ஆனது ஜனவரி 1, 1970 முதல் வினாடிகளின் எண்ணிக்கை, 00: 00:00என்றும். தேதி எனும் பொருளின் வரம்பு ஜனவரி 01, 1970 UTC என்பதுடன் -100,000,000 நாட்கள் முதல் 100,000,000 நாட்கள் வரையிலும் தொடர்புடையதாக செய்யப்பட்டுள்ளது
ஒரு.தேதியின் பொருளை உருவாக்கிடுவதற்கான கட்டளைவரி பின்வருமாறு:
var dateObjectName = new Date([parameters]);
இதில் dateObjectName என்பது உருவாக்கப்பட்ட தேதிஎனும் பொருளின் பெயராகும்; அது ஒரு புதிய பொருளாகவோ அல்லது ஏற்கனவே உள்ள பொருளின்பண்பியல்பாகவோ இருக்கலாம். புதிய திறவுச்சொல் இல்லாமல் அழைக்கும் தேதி தற்போதைய தேதியையும் நேரத்தையும் குறிக்கின்ற ஒரு சரத்தை வழங்குகிறது. முந்தைய தொடரியல் அளவுரு பின்வருவனவற்றில் ஏதேனும் இருக்கலாம்:
ஒன்றும் இல்லாதது(Nothing):: இன்றைய தேதியையும் நேரத்தையும் உருவாக்குகிறது. எடுத்துக்காட்டாக,
today = new Date();
ஒரு சரமானது பின்வரும் வடிவத்தில் தேதியைக் குறிக்கும்: “Month day, year hours:minutes:seconds.” எடுத்துக்காட்டாக,
var Xmas95 = new Date(“December 25, 1995 13:30:00”)
.இதில் மணி, நிமிடங்கள் அல்லது வினாடிகள் ஆகியவற்றை குறிப்பிடாமல் தவிர்த்துவிட்டால், மதிப்பு பூஜ்ஜியமாக அமைக்கப்படும்.
ஆண்டு, மாதம், நாளுக்கான முழு எண் மதிப்புகளின் தொகுப்பாகும். எடுத்துக்காட்டாக,
var Xmas95 = new Date(1995, 11, 25).
ஆண்டு, மாதம், நாள், மணி, நிமிடம் வினாடிகள் ஆகியவற்றிற்கான முழு எண் மதிப்புகளின் தொகுப்பாக இருக்கும். எடுத்துக்காட்டாக,
Xmas95 = new Date(1995, 11, 25, 9, 30, 0);
தேதி எனும் பொருளின் வழிமுறைகள் (methods)
தேதிகளையும் நேரங்களையும் கையாளும் தேதி எனும் பொருளின் வழிமுறைகள் பின்வருமாறான பரந்த வகைகளில் அடங்கும்:
“set” எனும் வழிமுறைகள், தேதியையும் நேர மதிப்புகளையும் Dateobjects இல் அமைப்பதற்கானவைகளாகும்.
“get” எனும் வழிமுறைகள், தேதி, நேர மதிப்புகளை Dateobjectகளில் இருந்து பெறுதலிற்கானவைகளாகும்.
“to” எனும் வழிமுறைகள், Dateobjects இலிருந்து சர மதிப்புகளை திரும்பப் பெறுதலிற்கானவைகளாகும்
parse , UTC ஆகிய வழிமுறைகள், Datestrings இன் பாகுபடுத்திகளாகும்
.”get” , “set” ஆகிய வழிமுறைகள் மூலம் வினாடிகள், நிமிடங்கள், மணி, மாதத்தின் நாள், வாரத்தின் நாள், மாதங்கள், வருடங்கள் ஆகியவற்றினை தனித்தனியாகப் பெற்று அமைக்கலாம். வாரத்தின் நாளை வழங்கும் ஒரு getDay எனும் வழிமுறையும்உள்ளது, ஆனால் தொடர்புடைய அதற்கான setDayஎனும் வழிமுறை இல்லை என்ற செய்தியை மனதில் கொள்க, ஏனெனில் வாரத்தின் நாள் தானாக அமைக்கப்படும். இந்த வழிமுறைகள் இந்த மதிப்புகளை பின்வருமாறு குறிப்பிட முழு எண்களைப் பயன்படுத்திகொள்கின்றன:
வினாடிகளும் நிமிடங்களும்: 0 முதல் 59 வரை
மணி: 0 முதல் 23 வரை
நாள்: 0 (ஞாயிறு) முதல் 6 (சனிக்கிழமை)
தேதி: 1 முதல் 31 வரை (மாதத்தின் நாள்)
மாதங்கள்: 0 (ஜனவரி) முதல் 11 (டிசம்பர்)
ஆண்டு: 1900ஆம் ஆண்டு முதல் ஆண்டுகள்
எடுத்துக்காட்டாக, பின்வரும் தேதியை வரையறுப்பதாகக்கொள்க:
var Xmas95 = new Date(‘December 25, 1995’);
பிறகுXmas95.getMonth() என்பது 11 எனும் விடையை வழங்கிடும்,
Xmas95.getFullYear() என்பது 1995 எனும் விடையை வழங்கிடும்.
தேதிகளை ஒப்பிடுவதற்கு getTime,setTime ஆகிய வழிமுறைகள் பயனுள்ளதாக இருக்கும். ஜனவரி 1, 1970, 00:00:00 முதல் ஒரு Dateobject க்கு மில்லி விநாடிகளின் எண்ணிக்கையை getTime எனும் வழிமுறை வழங்குகிறது. எடுத்துக்காட்டாக, பின்வரும் குறிமுறைவரிகள் நடப்பு ஆண்டில் மீதமுள்ள நாட்களைக் காட்டுகிறது:
var endYear = new Date(1995, 11, 31, 23, 59, 59, 999); // நாள்,மாதம் அமைக்கின்றது
endYear.setFullYear(today.getFullYear()); // நடப்பாண்டினை அமைக்கின்றது
var msPerDay = 24 * 60 * 60 * 1000; // நாளொன்றினை மில்லிவினாடிகள்
var daysLeft = (endYear.getTime() – today.getTime()) / msPerDay;
var daysLeft = Math.round(daysLeft); //ஆண்டில்எஞ்சியிருக்கும் நாட்களை வழங்குகிறது

இந்த எடுத்துக்காட்டில் இன்றைய தேதியைக் கொண்டிருக்கும் today என்ற பெயரிலானDateobjectஐ உருவாக்குகிறது. பின்னர் இது endYear எனும் பெயரில் நடப்பு ஆண்டாக அமைக்கிறது. அதன் பின்னர், ஒரு நாளைக்கு மில்லி விநாடிகளின் எண்ணிக்கையைப் பயன்படுத்தி, இது today ,endYear ஆகியவற்றிற்கு இடைப்பட்ட நாட்களின் எண்ணிக்கையை முழு நாளாக செய்து கணக்கிடுகிறது. தேதி சரங்களில் இருந்து ஏற்கனவே உள்ளDateobjectsகளுக்கு மதிப்புகளை ஒதுக்குவதற்கு parseஎனும் வழிமுறை மிக பயனுள்ளதாக இருக்கும். எடுத்துக்காட்டாக, பின்வரும் குறிமுறைவரிகளில் IPOdateobject க்கு ஒரு தேதியின் மதிப்பை ஒதுக்குவதற்கு parse ,setTime ஆகியவற்றினைப் பயன்படுத்திகொள்கிறது:
var IPOdate = new Date();
IPOdate.setTime(Date.parse(‘Aug 9, 1995’));
பின்வரும் எடுத்துக்காட்டில், JSClock() எனும் செயலியானது எண்ணிம கடிகாரத்தின் வடிவத்தில் நேரத்தை வழங்குகிறது.
function JSClock() {
var time = new Date();
var hour = time.getHours();
var minute = time.getMinutes();
var second = time.getSeconds();
var temp = ” + ((hour > 12) ? hour – 12 : hour);
if (hour == 0)
temp = ’12’;
temp += ((minute < 10) ? ‘:0’ : ‘:’) + minute; temp += ((second < 10) ? ‘:0’ : ‘:’) + second; temp += (hour >= 12) ? ‘ P.M.’ : ‘ A.M.’;
return temp;
}
இதில் JSClock எனும் செயலி முதலில் time என்ற புதிய Dateobjectஐ உருவாக்குகிறது; தருக்கங்கள் எதுவும் கொடுக்கப்படாததால், தற்போதைய தேதி , நேரத்துடன் நேரம் உருவாக்கப்படுகிறது. பின்னர் getHours,getMinutes,getSeconds ஆகிய வழிமறைகளுக்கான அழைப்புகள் தற்போதைய மணி, நிமிடம், இரண்டாவது மணி, நிமிடம் , வினாடி ஆகியவற்றின் மதிப்பை ஒதுக்குகின்றன. அடுத்த நான்கு கூற்றுகள் நேரத்தின் அடிப்படையில் ஒரு சர மதிப்பை உருவாக்குகின்றன. முதல் கூற்று ஒரு variabletemp ஐ உருவாக்குகிறது, அதற்கு ஒரு நிபந்தனை வெளிப்பாட்டைப் பயன்படுத்தி ஒரு மதிப்பை ஒதுக்குகிறது; if houris 12 ஐ விட பெரியதாக, (மணி – 12), இல்லையெனில் மணி ஆகவும், மணி 0 ஆக இல்லாவிட்டால், அது 12 ஆக மாறும். அடுத்த கூற்று minute value to temp உடன் சேர்க்கிறது. நிமிடங்களின் மதிப்பு 10 ஐ விடக் குறைவாக இருந்தால், நிபந்தனை வெளிப்பாடு முந்தைய பூஜ்ஜியத்துடன் ஒரு சரத்தைச் சேர்க்கிறது; இல்லையெனில் அது ஒரு எல்லைக் குறியிடுகின்ற பூஜ்ஜியத்துடன் ஒரு சரத்தைச் சேர்க்கிறது. ஒரு கூற்று அதே வழியில் temp இன் வினாடி மதிப்பை சேர்க்கிறது. இறுதியாக, ஒரு நிபந்தனை வெளிப்பாடு “P.M” உடன் சேர்க்கிறது. மணி 12 அல்லது அதற்கு மேல்; இல்லையெனில், அது “A.M.” ஆக temp இற்கு சேர்க்கின்றது.
தொடரும்

ஜாவா உரைநிரல் பயிற்சிவழிகாட்டி தொடர்-13 . வெளிப்பாடுகளும்( Expressions) இயக்கிகளும்(operators)-3

கோவையின் உறுப்புகளை நீக்குதல்
கோவைகள் வெறும் பொருட்கள் என்பதால், அவற்றிலிருந்து உறுப்புகளை நீக்குவது தொழில்நுட்ப ரீதியாக சாத்தியமாகும். இருப்பினும், இது ஒரு மோசமான செயலாகக் கருதப்படுகிறது, அதைத் தவிர்க்க முயற்சி செய்க. கோவையின் பண்புகளை நீக்கும் போது, கோவையின் நீளம் பாதிக்கப்படாது பிற உறுப்புகளும் மீண்டும் அட்டவணைப்படுத்தப்படாது. அந்த நடத்தையை அடைய, வரையறுக்கப்படாத மதிப்புடன் உறுப்பை மேலெழுதுவது மிகவும் நல்லது. உண்மையில் கோவையை கையாள, splice போன்ற கோவையின் பல்வேறு வழிமுறைகளைப் பயன்படுத்திடுக.
Type of எனும் இயக்கி
Type of எனும் இயக்கியை பின்வரும் வழிமுறைகளில் ஏதேனும் ஒன்றில் பயன்படுத்தி கொள்ளலாம்
type of operand
type of (operand)
Type of எனும் இயக்கியானது , மதிப்பிடப்படாத செயலேற்பியின் வகையைக் குறிக்கும் சரத்தை வழங்குகிறது. இதிலுள்ள operand என்பது string, variable, keyword, அல்லது object என்பதற்கான வகையை திருப்பி அனுப்புகின்றது. அடைப்புக்குறிகளை நாம் விரும்பினால் பயன்படுத்தி கொள்ளலாம். எடுத்துக்காட்டாக பின்வரும் மாறிகளை வரையறுப்பதாக கொள்க:
var myFun = new Function(‘5 + 2’);
var shape = ’round’;
var size = 1;
var foo = [‘Apple’, ‘Mango’, ‘Orange’];
var today = new Date();

Type of எனும் இயக்கியானது இந்த மாறிகளுக்கு பின்வரும் முடிவுகளை வழங்குகிறது:

typeof myFun; // “function” எனும் முடிவை வழங்குகின்றது
typeof shape; // “string” எனும் முடிவை வழங்குகின்றது
typeof size; // “number” எனும் முடிவை வழங்குகின்றது
typeof foo; // “object”எனும் முடிவை வழங்குகின்றது
typeof today; // “object” எனும் முடிவை வழங்குகின்றது
typeof doesntExist; // “undefined” எனும் முடிவை வழங்குகின்றது
true, null ஆகிய முக்கிய சொற்களுக்கு, Type of எனும் இயக்கியானது பின்வரும் முடிவுகளை வழங்குகிறது:
typeof true; // “boolean” எனும் முடிவை வழங்குகின்றது
typeof null; // “object” எனும் முடிவை வழங்குகின்றது
number அல்லது string, ஆகியவற்றில் Type of எனும் இயக்கியானது பின்வரும் முடிவுகளை வழங்குகிறது:
typeof 62; // “number” எனும் முடிவை வழங்குகின்றது
typeof ‘Hello world’; // “string” எனும் முடிவை வழங்குகின்றது
பண்பியல்பின் மதிப்புகளுக்கு, Type of எனும் இயக்கியானது, பண்பியல்பில் உள்ள மதிப்பின் வகையை வழங்குகிறது:
typeof document.lastModified; // “string” எனும் முடிவை வழங்குகின்றது
typeof window.length; // “number” எனும் முடிவை வழங்குகின்றது
typeof Math.LN2; // “number” எனும் முடிவை வழங்குகின்றது
வழிமுறைகள்(Methods),செயலிகள் (functions) ஆகியவைகளுக்கு, Type of எனும் இயக்கியானது பின்வரும் முடிவுகளை வழங்குகிறது:
typeof blur; // “function” எனும் முடிவை வழங்குகின்றது
typeof eval; // “function” எனும் முடிவை வழங்குகின்றது
typeof parseInt; // “function” எனும் முடிவை வழங்குகின்றது
typeof shape.split; // “function” எனும் முடிவை வழங்குகின்றது
முன் வரையறுக்கப்பட்ட பொருள்களுக்கு, Type of எனும் இயக்கியானது பின்வரும் முடிவுகளை வழங்குகிறது
typeof Date; // “function” எனும் முடிவை வழங்குகின்றது
typeof Function; // “function” எனும் முடிவை வழங்குகின்றது
typeof Math; // “object” எனும் முடிவை வழங்குகின்றது
typeof Option; // “function” எனும் முடிவை வழங்குகின்றது
typeof String; // “function” எனும் முடிவை வழங்குகின்றது

void எனும் இயக்கி
void எனும் இயக்கியானது பின்வரும் வழிமுறைகளில் பயன்படுத்தப்படுகிறது:
void (expression)
void expression
void எனும் இயக்கியானது மதிப்பைத் திரும்பப் பெறாமல் மதிப்பீடு செய்ய வேண்டிய வெளிப்பாட்டைக்(expression) குறிப்பிடுகிறது. இதில் expression என்பது மதிப்பீடு செய்வதற்கான ஜாவாஉரைநிரலின் வெளிப்பாடு ஆகும். வெளிப்பாட்டின் அருகிலுள்ள அடைப்புக்குறிகள் நாம் விரும்பினால் அவற்றை பயன்படுத்தலாம், ஆனால் அவற்றைப் பயன்படுத்துவது நல்ல பாணியாகும்.

Relational எனும் இயக்கி
ஒரு Relationalஎனும் இயக்கியானதுஅதன் செயலேற்பிகளை ஒப்பிட்டு, ஒப்பீடு உண்மையா என்பதன் அடிப்படையில் பூலியன் மதிப்பை வழங்குகிறது.

In எனும் இயக்கி
Inஎனும் இயக்கியானது குறிப்பிட்ட பண்பியல்பு குறிப்பிட்ட பொருளில் இருந்தால், உண்மை(true) எனும்மதிப்பை வழங்குகிறது. இதற்கானதொடரியல்:
propNameOrNumber in objectName
இதில் propNameOrNumber என்பது ஒரு சரம், எண் அல்லது குறிமுறையின் வெளிப்பாடாகும், இது ஒரு பண்பியில்பின் பெயர் அல்லது கோவையின் குறிமுறைவரியைக் குறிக்கிறது, மேலும் objectName என்பது ஒரு பொருளின் பெயராகும். பின்வரும் எடுத்துக்காட்டுகள் Inஎனும் இயக்கின் சில பயன்பாடுகளைக் காண்பிகின்றன.
// கோவைகள்
var trees = [‘redwood’, ‘bay’, ‘cedar’, ‘oak’, ‘maple’];
0 in trees; // true எனும் முடிவை வழங்குகின்றது
3 in trees; // true எனும் முடிவை வழங்குகின்றது
6 in trees; // false எனும் முடிவை வழங்குகின்றது
‘bay’ in trees; //false எனும் முடிவை வழங்குகின்றது (சுட்டுவரிசையின்
//எண்ணைக் குறிப்பிட வேண்டும்,அந்த சுட்டுவரிசையின்
//மதிப்பைக் அன்று
‘length’ in trees; //true எனும் முடிவை வழங்குகின்றது(நீளம் ஒரு கோவையின்
// பண்பியல்பு) உள்ளமைக்கப்பட்ட பொருட்கள்
‘PI’ in Math; //true எனும் முடிவை வழங்குகின்றது
var myString = new String(‘coral’);
‘length’ in myString; // true எனும் முடிவை வழங்குகின்றது
// தனியானப்பண்பு பொருட்கள்
var mycar = { make: ‘Honda’, model: ‘Accord’, year: 1998 };
‘make’ in mycar; // true எனும் முடிவை வழங்குகின்றது
‘model’ in mycar; // true எனும் முடிவை வழங்குகின்றது

               instance of எனும் இயக்கி
 instance of எனும் இயக்கியானது குறிப்பிடப்பட்ட பொருள் குறிப்பிட்ட பொருள் வகையைச் சேர்ந்ததாக இருந்தால், உண்மை(true) எனும்மதிப்பை வழங்குகின்றது. இதற்கான தொடரியல் பின்வருமாறு: 
               objectName instanceof objectType
               இதில் ObjectName என்பது பொருள் வகையுடன் ஒப்பிடுவதற்கான பொருளின் பெயராகும்,objectType என்பது தேதி அல்லது வரிசை போன்ற ஒரு பொருள் வகையாகும். எடுத்துக்காட்டாக, இயக்க நேரத்தில் ஒரு பொருளின் வகையை உறுதி செய்ய வேண்டிய சந்தர்ப்பங்களில் இதனை பயன்படுத்திகொள்க.மேலும் எடுத்துக்காட்டாக, விதிவிலக்குகளைப் பிடிக்கும்போது, எறியப்படும் விதியானது விலக்குகளின் வகையைப் பொறுத்து வெவ்வேறு விதிவிலக்கு-கையாளுதலில் குறிமுறைவரிகளை பிரிக்கலாம். எடுத்துக்காட்டாக, Day என்பது ஒரு Date object என்பதைத் தீர்மானிக்க பின்வரும் குறிமுறைவரியில் எடுத்துகாட்டினைப் பயன்படுத்துகிறது. Day என்பது ஒரு Date object என்பதால், இந்தகூற்றுகளானவை if எனும் கூற்றில் செயல்படுத்தப்படுகின்றன. 
   var theDay = new Date(1995, 12, 17);
   if (theDay instanceof Date) {
     // கூற்றுகள் செயல்படுத்தப்படுவதற்கு
               }

இயக்கிகளின் முன்னுரிமை
இயக்கிகளின் முன்னுரிமையானது ஒரு வெளிப்பாட்டை மதிப்பிடும்போது அவை பயன்படுத்தப்படும் வரிசையை தீர்மானிக்கிறது. அடைப்புக்குறிகளைப் பயன்படுத்தி இயக்கியின் முன்னுரிமையை மேலெழுதலாம். பின்வரும் அட்டவணையானது இயக்கிகளின் முன்னுரிமையை விவரிக்கிறது, அதிகபட்சம் முதல் குறைந்தபட்சமுன்னுரிமை வரை.

இயக்கியின் வகைதனிப்பட்ட இயக்கிகள்
உறுப்பு(member). []
அழைப்பு/நிகழ்வை உருவாக்குதல் (call / create instance)() new
விவாதம்/ உயர்த்துதல் (negation/increment)! ~ - + ++ -- type of void delete
பெருக்கல்/ வகுத்தல்(multiply/divide)* / %
கூட்டல்/ கழித்தல் (addition/subtraction)+ -
இருமநிலை(bitwise shift)<< >> >>>
தொடர்பு(relational)< <= > >= in instanceof
சமமான(equality)== != === !==
இருமநிலை(Bitwise -and)&
இருமநிலை(Bitwise -x or)^
இருமநிலை(Bitwise -or)|
தருக்கநிலை(Logical -and)&&
தருக்கநிலை(Logical -or)||
நிபந்தனை(conditional)?:
ஒதுக்கீடு(assignment)= += -= *= /= %= <<= >>= >>>= &= ^= |= &&= ||= ??=
காற்புள்ளி(comma),

இந்த அட்டவணையின் விரிவான பதிப்பு, ஒவ்வொரு இயக்கியைப் பற்றிய கூடுதல் விவரங்களுக்கான இணைப்புகளுடன் முழுமையாக, https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence#table எனும் இணையதள முகவரியில் காணலாம்.

வெளிப்பாடுகள்(expressions)
ஒரு வெளிப்பாடு என்பது ஒரு மதிப்பை தீர்வுசெய்கின்ற குறிமுறைவரியின் ஏதேனும் ஒரு செல்லுபடியாகின்ற அலகு ஆகும். ஒவ்வொரு தொடரியலின் செல்லுபடியாகின்ற வெளிப்பாடுகளும் சில மதிப்பைத் தீர்வுசெய்கின்றன, ஆனால் கருத்துரீதியாக, இரண்டு வகையான வெளிப்பாடுகள் உள்ளன: பக்க விளைவுகளுடன் (உதாரணமாக: ஒரு மாறிக்கு மதிப்பை வழங்குபவை) சில பொருளில் மதிப்பீடு செய்து ஒரு மதிப்பை தீர்வுசெய்கின்றது.
x = 7 என்ற வெளிப்பாடு முதல் வகைக்கு ஒரு எடுத்துக்காட்டுஆகும். இந்த வெளிப்பாடு = எனும் இயக்கியைப் பயன்படுத்தி 7 எனும்மதிப்பை x எனும் மாறிக்கு ஒதுக்குகிறது. வெளிப்பாடு தன்னை 7 இற்கு மதிப்பிடுகிறது.
3 + 4 எனும் குறிமுறைவரியானது இரண்டாவது வெளிப்பாட்டின் வகைக்கு ஒரு எடுத்துக்காட்டாகும். இந்த வெளிப்பாடு ஒரு மாறிக்கு7 எனும் முடிவை ஒதுக்காமல் மூன்று , நான்கு ஆகியவற்றினை ஒன்றாக சேர்க்க + எனும் இயக்கியைப் பயன்படுத்திகொள்கிறது.
ஜாவாஉரைநிரலானது பின்வரும் வெளிப்பாடுகளின் வகைகளைக் கொண்டுள்ளது:
எண்கணிதம்(arithamatic): ஒரு எண்ணை மதிப்பிடுகிறது, எடுத்துக்காட்டாக 3.14159. (பொதுவாக எண்கணித இயக்கிகளைப் பயன்படுத்திகொள்கிறது.)
சரம்(string): எழுத்துச்சரத்தை மதிப்பிடுகிறது, எடுத்துக்காட்டாக, Fred” அல்லது “234”. (பொதுவாக சர இயக்கிகளைப் பயன்படுத்திகொள்கிறது.)
தருக்கமுறை(Logical): உண்மை அல்லது தவறு என மதிப்பிடுகிறது. (பெரும்பாலும் தருக்க இயக்கிகளை உள்ளடக்கியது.)
முதன்மை வெளிப்பாடுகள்(Primary expressions): ஜாவாஉரைநிரலில் அடிப்படைச் சொற்களும் பொதுவான வெளிப்பாடுகளும்.
இடது புற வெளிப்பாடுகள்(left-hand-side expressions):இடதுபுற மதிப்புகள் ஒரு ஒதுக்கீட்டின் இலக்காகும்.

முதன்மை வெளிப்பாடுகள்(Primary expressions)
ஜாவாஉரைநிரலில் அடிப்படையான முக்கிய சொற்களும் பொதுவான வெளிப்பாடுகளும்.
this எனும்முக்கிய சொல்
தற்போதைய பொருளைக் குறிப்பிட இந்த முக்கிய சொல்லைப் பயன்படுத்திடுக. பொதுவாக, இது ஒரு வழிமுறையில் அழைக்கின்ற பொருளைக் குறிக்கிறது. புள்ளி அல்லது அடைப்புக்குறி குறியீட்டுடன் இதைப் பயன்படுத்திடுக:
this[‘propertyName’]
this.propertyName
பொருளும் அதன் உயர் மதிப்புகளும் குறைந்த மதிப்புகளும் கொடுக்கப்பட்ட ஒரு பொருளின் மதிப்பின் பண்பியில்பினை சரிபார்ப்பது என அழைக்கப்படும் செயலியாக கொள்க:
function validate(obj, lowval, hival) {
if ((obj.value < lowval) || (obj.value > hival))
console.log(‘Invalid Value!’);
}
பின்வரும் எடுத்துக்காட்டில் உள்ளதைப் போல,நிகழ்வினை கையாளுபவரை மாற்ற,இதைப் பயன்படுத்தி ஒவ்வொரு உறுப்புகளிலும் சரிபார்ப்பை அழைக்கலாம்:

Enter a number between 18 and 99:


Grouping operator()எனும்வெளிப்பாடு
Grouping operator() எனும்வெளிப்பாட்டில் மதிப்பீட்டின் முன்னுரிமையைக் கட்டுப்படுத்துகிறது. எடுத்துக்காட்டாக, முதலில் பெருக்கல் , வகுத்தல், பின்னர் கூட்டல் , கழித்தல் ஆகியவற்றை மேலெழுதலாம்.
var a = 1;
var b = 2;
var c = 3;
// இயல்புநிலை முன்னுரிமை
a + b * c // 7
//இது போன்ற முன்னிருப்பாக மதிப்பிடப்பட்டது
a + (b * c) // 7
// இப்போது மிகைப்படுத்தப்பட்ட முன்னுரிமை
//பெருக்குவதற்கு முன்பு கூட்டல்
(a + b) * c // 9
//இதற்கு சமமானதாகும்
a * c + b * c // 9
இடது புற வெளிப்பாடுகள்(left-hand-side expressions):இடதுபுற மதிப்புகள் ஒரு ஒதுக்கீட்டின் இலக்காகும்..
new
பயனாளரால் வரையறுக்கப்பட்ட பொருள் வகை அல்லது உள்ளமைக்கப்பட்ட பொருள் வகைகளில் ஒன்றை உருவாக்க, new எனும் இயக்கியைப் பயன்படுத்தலாம். new எனும் இயக்கியைப் பின்வருமாறு பயன்படுத்திடுக:
var objectName = new objectType([param1, param2, …, paramN]);
super
ஒரு பொருளின் பெற்றோரின் செயலியை அழைக்க super எனும் முக்கிய சொல்லை பயன்படுத்திகொள்ளப்படுகிறது. எடுத்துக்காட்டாக, பெற்றோர் கட்டமைப்பாளரை அழைப்பது இனங்களுடன் பயனுள்ளதாக இருக்கும்.
super([arguments]); // பெற்றோர் கட்டமைப்பாளரை அழைக்கிறது .
super.functionOnParent([arguments]);
தொடரும்

Previous Older Entries