يمكن تقسيم
تعلم جافا سكريبت
تقريبًا إلى ثلاثة أجزاء مختلفة: النواة (ECMAscript)، كائن النص (DOM)، كائن المتصفح (BOM)، النواة (ECMAscript): الكلمات الأساسية، البيانات، عوامل التشغيل،
كائن نص الكائن (DOM): سيقوم DOM بتخطيط الصفحة بأكملها في مستند يتكون من مستويات العقدة.
يتبع التحليل معيار W3C html dom:
يولي مرجع W3C dom اهتمامًا خاصًا لكائن متصفح BOM لوصف عقدة DOM
، والمتصفح الجديد المنبثق، وحجم إعداد المتصفح
كائن عالمي مدمج (ECMAscript) أساسي؛
الطرق: parseInt()، isNan()، encodeURI()... إلخ كلها طرق لهذا الكائن
انتبه بشكل خاص إلى رمز اللغة الديناميكية ()eval("alert('hi')"); لكن هذه الطريقة شريرة جدًا (الجانب الأمني)
وصف كائن النص (DOM):
<bookstore> <book class="cooking"> <title lang="en">الإيطالية اليومية</title> <author>جيادا دي لورينتيس</author> <year>2005</year> <price>30.00</price > </كتاب> </مكتبة>
1. أساسيات ECMAscript
$ نوع ضعيف متغير: var iOuouValue=100;
يمكن لـ $ إنهاء السطر بفاصلة منقوطة أو بدونها، ولكن بعد ذلك onsubmit="javascript:function();return false;"
$ انتباه خاص؛
"typeof" var test=1; تنبيه(typeof testX); //الإخراج "غير محدد"
"NaN" -> isNan("blue"); // إخراج
كائن $ "خطأ" var o = new Object();
فيما يلي شرح خاص بأن الوظيفة التي نكتبها عادةً هي كائن.
هذا var a = {name:"Liu Kaiyi"} يعادل var a = function(){this.name="Liu Kaiyi"}
; name:"test" ,pass:"123456",addr:"bj"} // ما هذا؟ ! json
عندما var str = '{name:"test"،pass:"123456"،addr:"bj"}'
var objectBean = eval(str); // هنا هو كائن objectBea.name باستخدام
مفهوم المجال:
<SCRIPT type = نص/جافا سكريبت>
فار sMessage = 'مرحبا';
مجموعة الدالة شيء () {
sColor = 'أحمر';
sMessage = 'مرحبًا بالعالم!';
}
setSomething();
تنبيه (sMessage)؛ // مرحبا بالعالم!
تنبيه (لون)؛ // أحمر
</SCRIPT> <SCRIPT type=text/javascript>
فار sMessage = 'مرحبا';
مجموعة الدالة شيء () {
var sColor = 'red';
sMessage = 'مرحبًا بالعالم!';
}
setSomething();
تنبيه (sMessage)؛ // مرحبا بالعالم!
تنبيه (لون) // لا شيء
</SCRIPT>
<SCRIPT type=text/javascript>
فار sMessage = 'مرحبا';
مجموعة الدالة شيء () {
var sColor = 'red';
var sMessage = 'Hello World!';
}
setSomething();
تنبيه (sMessage)؛ //مرحبا
تنبيه (لون) // لا شيء
</النص>
وضع الأساس للكائنات الموجهة: تطبيق كائن لنوع النموذج الأولي للكائن. مرجع
// أبسط الميراث
Object.prototype.inObj = 1
الدالة A();
{
this.inA = 2;
}
A.prototype.inAProto = 3;
B.prototype = new A; // ربط A بسلسلة النموذج الأولي لـ B
B.prototype.constructor = B;
الدالة ب()
{
this.inB = 4;
}
B.prototype.inBProto = 5;
س = جديد ب؛
document.write(x.inObj + ', ' + x.inA + ', ' + x.inAProto + ', ' + x.inB + ', ' + x.inBProto);
//1, 2, 3, 4 ، 5
// زيادة بعض الثقة http://www.json.org/json.js
Object.prototype.toJSONString = function (filter) { return JSON.stringify(this, filter }; ثم يمكننا استخدام bean.toJSONString() أليس كذلك؟
$ الحجج
وظيفة getFun(){alert(arguments.length);};
getFun("xx") //الإخراج 1
getFun("xx",23) //الإخراج 2
عبارة $؛ بموجب تعليمات خاصة لـ
for(var i=0i<iCount;i++) أو for(attr in object);
إذا كنت تشعر بالملل، يمكنك ذلك for( sProp in window ){alert(sProp+"Hey,please!");} // انظر إلى انعكاس جافا سكريبت
وجوه المنحى:
var bean = new Bean();
1.وظيفة طريقة المصنع
getAttr(){
تنبيه (this.attr)
}
function Bean(tattr){
var
bean = new
Object
;
}
إنها في الأساس نسخة مقلدة من الكائنات الموجهة
2. قم ببناء
الدالة Bean(tattr){
this.attr = tattr;
bean.getAttr
=
function(){
تنبيه
(this.attr);
"!
3.
وظيفة وضع النموذج الأولي Bean(){}
Bean.prototype.attr = "";
Bean.prototype.getAttr=function(){alert(this.attr);}
حل مشكلة "وظيفة مكررة تم إنشاؤها"، ولكن مشكلة جديدة Bean.prototype.getArray = new Array();
ستشارك كائناتها الجديدة bean1 وbean2 مساحة المصفوفة الجديدة (والتي لا نريد رؤيتها)
4. نموذج مختلط :) Haha
function Bean(){
this.attr= "";
this.getArray=new Array;
}
Bean.prototype.getAttr=function(){alert(this.attr);}
5. النموذج الأولي الديناميكي (لاحظ أنه من الآن فصاعدًا، أصبح موجهًا للكائنات حقًا !!!)
function Bean(){
this.attr= "";
=
new Array;
if(typeof Bean._initialized == "undef" ){
Bean.prototype.getAttr=function(){alert(this.attr);};
Bean._initialized= صحيح
}
}
/****************************************************** ***** **************/
وراثة الكائن
1. انتحال شخصية الكائن! ! (يمكن أن يدعم الميراث المتعدد، المقلد قوي جدًا)
function classA(sstr){
this.color
= sstr
;
};
}
الدالة classC(){}
function classB(){
this.newMethod =ClassA;
this.newMethod()
;
this.newMethod =ClassC ;
this.newMethod();
حذف this.newMethod ;
this.arrt = "google";
}
2.call() Apply() هو أيضًا مقلد،
function classA(sstr){
this.color
= sstr
;
};
}
function classB(){
// this.newMethod =ClassA ;
// this.newMethod();
//
حذف this.newMethod
;
"أحمر"))
this.arrt = "بايدو";
}
3. سلسلة النموذج الأولي للميراث الأرثوذكسي (لكنها لا تدعم الميراث المتعدد)
وظيفة فئةA () {this.oo = "اختبار"؛}
classA.prototype.color = "red";
فئة الوظيفة ب () {}
classB.prototype = new classA;
classB.prototype.sayName = function(){
تنبيه(هذا.اللون);
}
varbb = new classB;
bb.sayName(); // الإخراج باللون الأحمر
تنبيه (bb.oo)؛ //
تنبيه اختبار الإخراج (مثيل bb للفئة أ)؛
تنبيه (مثيل bb للفئة B)؛ // الإخراج صحيح
4. إذا كنت تريد المزيد من الميراث! ! ويدعم أيضًا مثيل
طريقة الخلط:
فئة الوظيفة أ () {}
فئة الوظيفة ب () {}
وظيفة فئةC () {
classA.call(this);
classC.call(this);
}
classC.prototype = new classA;// لاحظ أنه لا يمكن استخدام مثيل إلا لـ A