نوع‌های مرجع ECMAScript

نوع‌های مراجعه‌ای معمولاً به عنوان کلاس (class) شناخته می‌شوند.

این درس تعداد زیادی از نوع‌های پیش‌تعریف شده ECMAScript را بحث خواهد کرد.

نوع‌های مراجعه‌ای

نوع‌های مراجعه‌ای معمولاً به عنوان کلاس (class) شناخته می‌شوند، یعنی با برخورد با مقادیر مراجعه‌ای، با اشیاء سروکار داریم.

این درس تعداد زیادی از نوع‌های پیش‌تعریف شده ECMAScript را بحث خواهد کرد.

از اینجا به بعد، به نوع‌های مرتبط با نوع‌های اصلی بحث شده‌شده، پرداخته خواهد شد.

注意:از روایات سنتی، ECMAScript واقعاً کلاسی ندارد. در واقع، جایی که کلمه 'کلاس' در ECMA-262 وجود ندارد، فقط نشان می‌دهد که کلاس وجود ندارد. ECMAScript 'تعریف اشیاء' را تعریف کرده است که از لحاظ منطقی معادل کلاس‌های زبان‌های برنامه‌نویسی دیگر است.

提示:این آموزش از اصطلاح "شیء" استفاده خواهد کرد.

شیءها با استفاده از علامت new و نام شیء مورد نظر ایجاد می‌شوند. به عنوان مثال، کد زیر یک نمونه از شیء Object ایجاد می‌کند:

var o = new Object();

این نحوه نوشتن مشابه زبان Java است، اما در ECMAScript، وقتی تعداد بیشتری از پارامترها وجود دارد، نیاز به استفاده از قوس‌ها است. اگر پارامتری وجود نداشته باشد، مانند کد زیر، قوس‌ها می‌توانند حذف شوند:

var o = new Object;

注意:با اینکه استفاده از قوس‌ها اجباری نیست، اما برای جلوگیری از هرج و مرج، بهتر است از قوس‌ها استفاده شود.

提示:ما در فصل پایه‌ای شیءها به طور عمیق‌تری به شیءها و رفتارهای آن‌ها خواهیم پرداخت.

موضوع این بخش شیءهای نوعی با نوع اولیه مشابه است.

شیء Object

شیء Object به طور مستقل کاربرد کمی دارد، اما قبل از اینکه به سایر کلاس‌ها نزدیک شویم، باید آن را بشناسیم. زیرا شیء Object در ECMAScript با java.lang.Object در Java مشابه است، همه شیءها در ECMAScript از این شیء ارث می‌برند، همه ویژگی‌ها و روش‌های شیء Object در سایر شیءها ظاهر می‌شوند، بنابراین با درک شیء Object، می‌توان بهتر سایر شیءها را درک کرد.

شیء Object دارای ویژگی‌های زیر است:

constructor
اشاره به تابعی که شیء را ایجاد می‌کند (نشانگر). برای شیء Object، این نشانگر به تابع اولیه Object() اشاره دارد.
Prototype
اشاره به نمونه‌ای از原型 شیء. برای همه شیءها، این به طور پیش‌فرض یک نمونه از شیء Object را بازمی‌گرداند.

شیء Object دارای چندین روش دیگر نیز است:

hasOwnProperty(property)
تعیین اینکه آیا شیء دارای ویژگی خاصی است. باید این ویژگی به صورت رشته‌ای مشخص شود. (مثلاً o.hasOwnProperty("name")).
IsPrototypeOf(object)
تعیین اینکه آیا این شیء یک نمونه از یک شیء دیگر است.
PropertyIsEnumerable
تعیین اینکه آیا ویژگی داده شده می‌تواند با استفاده از دستور for...in قابل شمارش باشد یا خیر.
ToString()
بازگشت نمودار خطی اولیه شیء. برای شیء Object، ECMA-262 این ارزش را تعریف نکرده است، بنابراین ارزش‌های مختلفی در اجرای مختلف ECMAScript وجود دارد.
ValueOf()
بازگشت ارزش اولیه مناسب برای شیء. برای بسیاری از شیءها، ارزشی که این روش بازمی‌گرداند با بازگشت ToString() مشابه است.

توضیحات:上面列出的每种属性和方法都会被其他对象覆盖。

Boolean 对象

Boolean 对象是 Boolean 原始类型的引用类型。

要创建 Boolean 对象,只需要传递 Boolean 值作为参数:

var oBooleanObject = new Boolean(true);

Boolean 对象将覆盖 Object 对象的 ValueOf() 方法,返回原始值,即 true 和 false。ToString() 方法也会被覆盖,返回字符串 "true" 或 "false"。

遗憾的是,在 ECMAScript 中很少使用 Boolean 对象,即使使用,也不易理解。

问题通常出现在 Boolean 表达式中使用 Boolean 对象时。例如:

var oFalseObject = new Boolean(false);
var bResult = oFalseObject && true;	//输出 true

在这段代码中,用 false 值创建 Boolean 对象。然后用这个值与原始值 true 进行 AND 操作。在 Boolean 运算中,false 和 true 进行 AND 操作的结果是 false。不过,在这行代码中,计算的是 oFalseObject,而不是它的值 false。

正如前面讨论过的,在 Boolean 表达式中,所有对象都会被自动转换为 true,所以 oFalseObject 的值是 true。然后 true 再与 true 进行 AND 操作,结果为 true。

注意:虽然你应该了解 Boolean 对象的可用性,不过最好还是使用 Boolean 原始值,避免发生这一节提到的问题。

مطالعه کنید

如需更多有关 Boolean 对象的信息,请访问 JavaScript بولین اوبجیکٹ مرجع دستور زبان.

Number 对象

正如你可能想到的,Number 对象是 Number 原始类型的引用类型。要创建 Number 对象,采用下列代码:

var oNumberObject = new Number(68);

آپ نے اپنے اپنے فصلی میں جو خاص اعداد (مثلاً Number.MAX_VALUE) کا ذکر کیا گیا تھا، اس کو تسلیم کرنا چاہئیے، سارے خاص اعداد Number کی سائٹک اپریشنوں کی اپریشنوں کی خصوصیات کی حامل ہیں.

دکھنا چاہئے کہ اعداد کے اپنے اصل ویلو کو حاصل کیا جائے، فیر valueOf() مہم استعمال کریں:

var iNumber = oNumberObject.valueOf();

البته، کلاس Number نیز روش toString() دارد که در بخش بحث در مورد تبدیل نوع به طور دقیق‌تر توضیح داده شده است.

علاوه بر روش‌های استاندارد ارث‌برداری از Object، Number دارای چندین روش اختصاصی برای پردازش اعداد است.

روش toFixed()

روش toFixed() خروجی یک عدد با تعداد اعشاری مشخص است. به عنوان مثال:

var oNumberObject = new Number(68);
alert(oNumberObject.toFixed(2));  // خروجی "68.00"

در اینجا، پارامتر روش toFixed() 2 است، که نشان می‌دهد باید دو عدد اعشاری نمایش داده شود. این روش "68.00" را برمی‌گرداند، فضاهای خالی با 0 پر می‌شوند. برای برنامه‌هایی که با پول کار می‌کنند، این روش بسیار مفید است. روش toFixed() می‌تواند اعداد با 0 تا 20 عدد اعشاری را نمایش دهد، تعداد بیشتری از این محدوده باعث بروز خطا می‌شود.

روش toExponential()

یکی دیگر از روش‌های مرتبط با فرمت‌دهی اعداد روش toExponential() است که فرمتی از اعداد به صورت علمی ارائه می‌دهد.

مانند روش toFixed()، روش toExponential() نیز یک پارامتر دارد که تعداد دفعات اعداد اعشاری را مشخص می‌کند. به عنوان مثال:

var oNumberObject = new Number(68);
alert(oNumberObject.toExponential(1));  // خروجی "6.8e+1"

نتیجه این کد "6.8e+1" است، همانطور که قبلاً توضیح داده شده است، این نشان‌دهنده 6.8x10 است1مشکل این است که اگر نمیدانید که باید از کدام فرم (فرم فرضی یا نمایی) برای نمایش عدد استفاده کنید، چگونه باید عمل کنید؟ می‌توانید از روش toPrecision() استفاده کنید.

روش toPrecision()

روش toPrecision() بر اساس نمایی که معنی‌دارترین است، فرم فرضی یا نمایی اعداد را برمی‌گرداند. این روش یک پارامتر دارد، تعداد کل اعداد برای نمایش عدد (بدون نمونه). به عنوان مثال،

var oNumberObject = new Number(68);
alert(oNumberObject.toPrecision(1));  // خروجی "7e+1"

مأموریت این کد این است که عدد 68 را با یک عدد نشان دهد، نتیجه "7e+1" است، به صورت دیگری نشان داده می‌شود که 70 است. البته، روش toPrecision() عدد را به صورت تقریبی درمی‌آورد. اما اگر 68 را با دو عدد نشان دهیم، بسیار آسان‌تر است:

var oNumberObject = new Number(68);
alert(oNumberObject.toPrecision(2));  // خروجی "68"

یقیناً، خروجی "68" است، زیرا این دقیقاً نمایی از این عدد است. اما اگر تعداد دفعات تعیین شده بیشتر از تعداد مورد نیاز باشد، چه؟

var oNumberObject = new Number(68);
alert(oNumberObject.toPrecision(3));  // "68.0" را برمی‌گرداند

در این حالت، toPrecision(3) برابر با toFixed(1) است و "68.0" را برمی‌گرداند.

روش‌های toFixed()، toExponential() و toPrecision() عملیات چرخش را انجام می‌دهند تا با دقت صحیحی با تعداد اعداد اعشاری نشان داده شوند.

提示:مانند Boolean Object، رشته‌ی Number نیز مهم است، اما باید از این نوع کمتر استفاده کرد تا از مشکلات احتمالی جلوگیری شود. هر زمان که ممکن است، از نمایی اصلی اعداد استفاده کنید.

مطالعه کنید

برای اطلاعات بیشتر در مورد رشته‌ی Number، به JavaScript نمبر اوبجیکٹ مرجع دستور زبان.

رشته‌ی String

رشته‌ی String یک نمایی از نوع رشته‌ی اصلی است که به صورت زیر ایجاد می‌شود:

var oStringObject = new String("hello world");

روش‌های valueOf() و toString() رشته‌ی String همیشه مقادیر نوع رشته را برمی‌گردانند:

alert(oStringObject.valueOf() == oStringObject.toString());	// "true" را برمی‌گرداند

اگر این کد را اجرا کنید، خروجی "true" است که نشان می‌دهد این مقادیر واقعاً برابر هستند.

توضیحات:رشته‌ی String یکی از نوع‌های پیچیده‌ی ECMAScript است. همچنین، موضوع این بخش تنها روش‌های پایه‌ی رشته‌ی String است. برای اطلاعات بیشتر در مورد روش‌های پیشرفته، بخش‌های مرتبط با این آموزش را بخوانید یا به JavaScript استرنگ اوبجیکٹ مرجع دستور زبان.

ویژگی length

رشته‌ی String دارای ویژگی length است که تعداد حروف رشته را نشان می‌دهد:

var oStringObject = new String("hello world");
alert(oStringObject.length);	// "11" را برمی‌گرداند

این مثال "11" را به نمایش می‌گذارد، که تعداد حروف در "hello world" است. توجه داشته باشید که حتی اگر رشته شامل حروف دو بایتی باشد (در مقایسه با حروف ASCII که فقط یک بایت استفاده می‌کنند)، هر حرف فقط یک حرف محسوب می‌شود.

روش‌های charAt() و charCodeAt()

رشته‌ی String نیز دارای تعداد زیادی روش است.

ابتدا، دو روش charAt() و charCodeAt() به یک حرف در یک رشته دسترسی دارند. هر دو روش یک پارامتر دارند، که موقعیت حرفی است که باید عملیات روی آن انجام شود.

charAt() روشی است که حرف در موقعیت مشخص شده را برمی‌گرداند:

var oStringObject = new String("hello world");
alert(oStringObject.charAt(1));	// اخرین حرف "e"

سطر "hello world" میں، پوزیشن 1 کا حرف "e" ہے۔ "ECMAScript اصل نوعیت" کے سلسلے میں ہم نے بتایا کہ پہلا حرف کی پوزیشن 0 ہے، دوسرا حرف کی پوزیشن 1 ہے، اور مزید کی پوزیشنوں کا ترتیب اسی طرح ہے، لہذا charAt(1) کی وجہ سے "e" کو بازگشتی دیتا ہے۔

اگر کوئی اشارئی کد نہیں حاصل کریں چاہئیں تو، تو charCodeAt() طریق کو بروئیں کیا جاسکتا ہے:

var oStringObject = new String("hello world");
alert(oStringObject.charCodeAt(1));	//بازگشتی دیتا ہے "101"

یہ مثال "101" کو بازگشتی دیتا ہے، جو چھوٹی حرف "e" کا اشارئی کد ہے۔

concat() طریق

اب concat() طریق، ایک یا کئی سطر کو String آئی-چوئی کی اصل وجہ کو باندھنا بروئیں ہے۔ اس طریق کا استعمال سطر اصل وجہ کو بازگشتی دیتا ہے، اصل String آئی-چوئی کو بدلنے کی جگہ نہیں دیتا ہے:

var oStringObject = new String("hello ");
var sResult = oStringObject.concat("world");
alert(sResult);		//بازگشتی دیتا ہے "hello world"
alert(oStringObject);	//بازگشتی دیتا ہے "hello "

اس کوئی کد میں، concat() طریق کا استعمال کیا گیا ہے جو "hello world" کو بازگشتی دیتا ہے، جبکہ String آئی-چوئی کو "hello " رکھتا ہے۔ اس وجہ سے، عمدتاً نیم نیم کا استعمال کیا جاتا ہے (+) سطر باندھن کے لئے، کیونکہ اس کی شکل سے حقیقی رفتار کو ظاہر کرتی ہے:

var oStringObject = new String("hello ");
var sResult = oStringObject + "world";
alert(sResult);		//بازگشتی دیتا ہے "hello world"
alert(oStringObject);	//بازگشتی دیتا ہے "hello "

indexOf() اور lastIndexOf() طریق

اب تک، ان سطر باندھن کے طریقوں، سطر میں کوئی ایک حرف کو دستیاب کرنے کے طریقوں کا ذکر کیا گیا ہے، لیکن اگر کوئی سطر میں کوئی حرف کی موجودگی کو معلوم نہیں کیا جاسکتا تو کیا طریق کا استعمال کیا جائے؟ اس وقت، indexOf() اور lastIndexOf() طریقوں کو بروئیں کیا جاسکتا ہے۔

indexOf() اور lastIndexOf() طریق دونوں کوئی مخصوص سطر کو دوسرے سطر میں کی جگہوں کو بازگشتی دیتے ہیں، اگر سطر نہیں تلاش کیا جاتا تو -1 بازگشتی دیتا ہے۔

یہ دو طریق کی فرق یہ ہے کہ indexOf() طریق سے ابتدائی منظر سے (پوزیشن 0) کوئی سطر تلاش کرتا ہے، جبکہ lastIndexOf() طریق سے آخری منظر سے کوئی سطر تلاش کرتا ہے۔ مثال:

var oStringObject = new String("hello world!");
alert(oStringObject.indexOf("o"));		//خروجی "4"
alert(oStringObject.lastIndexOf("o"));		//خروجی "7"

یہاں، پہلا "o" سٹرنگ نمبر 4 میں موجود ہے، یعنی "hello" میں "o" کا نمبر 4، آخری "o" نمبر 7 میں موجود ہے، یعنی "world" میں "o" کا نمبر 7۔ اگر اس سٹرنگ میں صرف ایک "o" سٹرنگ موجود ہے تو، indexOf() اور lastIndexOf() میتھد کا نمبر سے مساوی ہوتا ہے۔

localeCompare() میتھد

آئندہ میتھد localeCompare() ہے، جو سٹرنگ کو مرتب کرتی ہے۔ اس میتھد کا ایک پارامتر ہوتا ہے - مقابلوئی کی جانی والی سٹرنگ، واپس کردار دیئے جانے والا کاروبار سے متعلق تین سے کم سے زیادہ اعداد سے کسی سے کسی کا واپس کردار دیتی ہے:

  • اگر سٹرنگ آپریوائز متعدد متبادل سے قبل آتا ہے، تو منفی عدد واپس کردار دیتی ہے
  • اگر سٹرنگ آپریوائز متعدد متبادل سے مساوی ہوتی ہے، تو 0 واپس کردار دیتی ہے
  • اگر سٹرنگ آپریوائز اپنے متعدد متبادل سے بعد آتا ہے، تو مثبت عدد واپس کردار دیتی ہے۔

توضیحات:اگر منفی عدد واپس کردار دیا جاتا ہے تو، سب سے عام منفی عدد -1 ہوتا ہے، لیکن واپس کردار دیئے جانے والا کاروبار سے متعلق ہوتا ہے۔ اگر مثبت عدد واپس کردار دیا جاتا ہے تو، سب سے عام مثبت عدد 1 ہوتا ہے، لیکن واپس کردار دیئے جانے والا کاروبار سے متعلق ہوتا ہے۔

مثال درج ذیل ہے:

var oStringObject = new String("yellow");
alert(oStringObject.localeCompare("brick"));		//خروجی "1"
alert(oStringObject.localeCompare("yellow"));		//خروجی "0"
alert(oStringObject.localeCompare("zoo"));		//خروجی "-1"

اسکریپت میں، سٹرنگ "yellow" کو 3 اعداد سے مقابلوئی کی گئی ہے، یعنی "brick"، "yellow" اور "zoo"۔ چونکہ حروف کی ترتیب کے مطابق مرتب کیا گیا ہے، لہذا "yellow" "brick" کے بعد آتا ہے، اس لئے localeCompare() 1 واپس کردار دیتی ہے؛ "yellow" "yellow" سے مساوی ہے، لہذا localeCompare() 0 واپس کردار دیتی ہے؛ "zoo" "yellow" کے بعد آتا ہے، localeCompare() -1 واپس کردار دیتی ہے۔ ایک بار پھر وضاحت کرو، واپس کردار دیئے جانے والا کاروبار سے متعلق ہوتا ہے، لہذا بہترین طریقہ localeCompare() میتھد کو اس طرح سے بلاگت کیا جانا چاہئے:

var oStringObject1 = new String("yellow");
var oStringObject2 = new String("brick");
var iResult = oStringObject1.localeCompare(oStringObject2);
if(iResult < 0) {
  alert(oStringObject1 + " قبل میں آتا ہے " + oStringObject2);
}
  alert(oStringObject1 + " بعد میں آتا ہے " + oStringObject2);
}
  alert("دو سٹرنگ مساوی ہیں");
}

اس طرح کا استعمال کرکے، اس کو یقین دہانی ہوگا کہ اس کو تمام پیروانوں میں صحیح طریقے سے چلایا جائے گا۔

localeCompare () کا خاصیت یہ ہے کہ اس کا کام کرنے والا علاقہ (locale، یعنی ملک/علاقہ اور زبان) اس طو ر کا دقیق وضاحت دیتا ہے کہ اس طو ر کیسے چلتی ہے۔ امریکا میں، انگریزی ECMAScript کا معیاری زبان ہے، localeCompare () کا کاروبار حروف کی حیثیت سے بندی ہوتا ہے، بچولی حروف کا حروف کی ترتیب میں چھوٹا ہوتا ہے، لیکن دیگر علاقوں میں اس طرح نہیں کرسکتا۔

سائز () اور سوبسٹرنگ ()

ایکم اسکریپٹ نے دو طرح فراہم کی ہیں تاکہ آپ سوبسٹرنگ کے ذریعے سٹرنگ کی قیمتوں کی تعمیر کریں، یعنی سائز () اور سوبسٹرنگ ()۔ دونوں طو ر سے بلاک کی سوبسٹرنگ کو برآمد کرتے ہیں، دونوں طو ر سے ایک یا دو پارامٹر قبول کرتے ہیں۔ پہلا پارامٹر یہ ہوتا ہے کہ آپ کو کس سے شروع کرسکتا ہے، دوسرا پارامٹر (اگر استعمال کیا گیا تو) یہ ہوتا ہے کہ آپ کو کس تک تک رسکتا ہے (یعنی، آپ کو کوئی چیز برآمد نہیں کی جاتی ہے)۔ اگر دوسرا پارامٹر چھوڑ دیا جائے تو، اگلایا پارامٹر سٹرنگ کی طو ر کی لگنات کا نامزد کیا جائے گا۔

جیسٹ ایک طرح سے، میکڑ کو کونکیت () کی طرح، سائز () اور سوبسٹرنگ () کی طو ر سے کوئی چیز نہیں تبدیل ہوتی ہے۔ وہ صرف اصل سٹرنگ کی قیمت برآمد کرتے ہیں، سٹرنگ کی طرح کو بدل دینے سے بچاتے ہیں۔

var oStringObject = new String("hello world");
alert(oStringObject.slice("3"));		// خروجی "lo world"
alert(oStringObject.substring("3"));		// خروجی "lo world"
alert(oStringObject.slice("3", "7"));		// خروجی "lo w"
alert(oStringObject.substring("3", "7"));	// خروجی "lo w"

اس مثال میں، slice() اور substring() کا استعمال اور ان کا واپسی ایک سے متفاوت نہیں ہوتا، جب صرف پارامتر 3 کیا جائے تو دونوں کا واپسی "lo world" ہوتا ہے، کیونکہ "hello" میں دوسرے "l" کا مقام 3 پر ہوتا ہے، جب پارامتر "3" اور "7" کیا جائے تو دونوں کا واپسی "lo w" ہوتا ہے ("world" میں حرف "o" کا مقام 7 پر ہوتا ہے، لہذا وہ نتائج میں شامل نہیں ہوتا ہے)。

دو کی فونکشن مکمل طور پر ایک سے متفاوت کیونکہ وہ دو کی فونکشن کی طرح نہیں ہیں، لیکن منفی اعداد کے لئے، وہ دونوں کا طریقہ کار کچھ مختلف ہوتا ہے。

منفی اعداد کے لئے، slice() کا طریقہ کار اس طرح سے استعمال کیا جاتا ہے کہ اس کو لفظ کی لمبائی سے جمع کردیا جاتا ہے، جبکہ substring() کا طریقہ کار اس کو 0 کے طور پر بندوبست کردیا جاتا ہے (یعنی اس کو نظر انداز کردیا جاتا ہے)。مثلاً:

var oStringObject = new String("hello world");
alert(oStringObject.slice("-3"));		// خروجی "rld"
alert(oStringObject.substring("-3"));	// خروجی "hello world"
alert(oStringObject.slice("3, -4"));		// خروجی "lo w"
alert(oStringObject.substring("3, -4"));	// خروجی "hel"

یہی طرح سلیس() اور substring() کی بنیادی کافی فرق دکھائی دیتی ہے。

جب صرف -3 کا متغیر صرف کیا جائے تو، slice() نے "rld" واپس کردیا اور substring() نے "hello world" واپس کردیا، یہ وجہ یہ ہے کہ لفظ "hello world" کے لئے، slice("-3") کو slice("8") میں تبدیل کردیا اور substring("-3") کو substring("0") میں تبدیل کردیا۔

ایسا ہی، پارامتر 3 اور -4 کا استعمال کیا جاتا ہے تو فرق واضح ہوتا ہے۔ slice() کو slice(3, 7) میں تبدیل کیا جاتا ہے، جیسا کہ پچھلے مثال میں دیا گیا ہے، "lo w" پرنتیج کریں۔ اور substring() کا طریقہ کار کو دو پارامتر کے طور پر سمجھا جاتا ہے، substring(3, 0)، جو حقیقت میں substring(0, 3) ہوتا ہے، کیونکہ substring() کو کوئی بھی چھوٹی تعداد کو شروع کی تعداد کے طور پر سمجھا جاتا ہے اور بڑی تعداد کو ختم کی تعداد کے طور پر سمجھا جاتا ہے۔ لہذا substring("3, -4") پرنتیج کریں "hel"۔ آخری سطر کا مطلب یہ ہے کہ کس طرح یہ متبادلوں کو استعمال کیا جاتا ہے۔

toLowerCase()، toLocaleLowerCase()، toUpperCase() اور toLocaleUpperCase()

آخرین بحث کا موضوع بڑا چھوٹا بنانے کا عمل کا معاملہ ہے۔ 4 طرح کے متبادل کو استعمال کیا جاتا ہے، یعنی

  • toLowerCase()
  • toLocaleLowerCase()
  • toUpperCase()
  • toLocaleUpperCase()

نام سے واضح ہے کہ ان کا استعمال کیا جانا چاہئے، پہلے دو میں کوئی بھی الفاظ کو پورا چھوٹا بنانے کے لئے استعمال کیا جاتا ہے، اور بعد میں دو میں کوئی بھی الفاظ کو پورا بڑا بنانے کے لئے استعمال کیا جاتا ہے۔

toLowerCase() وtoUpperCase() کا مطلب یہ ہے کہ وہ ابتدائی طور پر عمل کریں، جو java.lang.String میں کی جاتی ہیں۔

toLocaleLowerCase() و toLocaleUpperCase() کا مطلب یہ ہے کہ وہ مقامی بنیاد پر عمل کریں (جیسا کہ localeCompare() میں ہے)。کئی علاقوں میں، مقامی خصوصی طو ر کا متبادل عام طور پر کی جاتی ہے (مثلاً ترکی)。لہذا صحیح تبدیلی کے لئے مقامی خصوصی طو ر کا استعمال کیا جانا چاہئے.

var oStringObject = new String("Hello World");
alert(oStringObject.toLocaleUpperCase());	// نکالای "HELLO WORLD" پرنتیج کریں
alert(oStringObject.toUpperCase());		// نکالای "HELLO WORLD" پرنتیج کریں
alert(oStringObject.toLocaleLowerCase());	// نکالای "hello world" پرنتیج کریں
alert(oStringObject.toLowerCase());		//输出 "hello world"

这段代码中,toUpperCase() 和 toLocaleUpperCase() 输出的都是 "HELLO WORLD",toLowerCase() 和 toLocaleLowerCase() 输出的都是 "hello world"。一般来说,如果不知道在以哪种编码运行一种语言,则使用区域特定的方法比较安全。

提示:记住,String 对象的所有属性和方法都可应用于 String 原始值上,因为它们是伪对象。

instanceof 运算符

在使用 typeof 运算符时采用引用类型存储值会出现一个问题,无论引用的是什么类型的对象,它都返回 "object"。ECMAScript 引入了另一个 Java 运算符 instanceof 来解决这个问题。

instanceof 运算符与 typeof 运算符相似,用于识别正在处理的对象的类型。与 typeof 方法不同的是,instanceof 方法要求开发者明确地确认对象为某特定类型。例如:

var oStringObject = new String("hello world");
alert(oStringObject instanceof String);	// 'true' پر آؤتا ہے

یہ کد 'واریبل oStringObject ایک استرنگ اوبجیکٹ کی مثال ہو یا نہو' سوال کرتا ہے، واریبل oStringObject کی یقیناً استرنگ اوبجیکٹ کی مثال ہے، لہذا نتیجہ 'true' ہوتا ہے۔ اگرچہ اس طرح کا typeof میتود بہت سستا نہیں ہوتا، لیکن typeof میتود کا 'object' رجوع کیا جاتا ہو، instanceof میتود بہت مفید ہوتا ہے۔