جافا سكريبت الأسماء المستعارة
-
20-08-2019 - |
سؤال
هدفي هو إنشاء ما يشبه "مكتبة جافا سكريبت"، إذا أمكن تسميتها بهذا الاسم.أنوي استخدامه فقط لمعالجة الصفحات أثناء تصفح الويب، وتحميله ديناميكيًا كبرنامج نصي لـ Greasemonkey.الفكرة هي أن يكون "win
"تم تعيينه ل window
, "doc
" -> document
, "win.loc
" -> win.location
, ، وعدد قليل من تعيينات الراحة الأخرى، ولكنك حصلت على الفكرة.هل يمكنك أن تعطيني بعض الأمثلة لألتقط منها بناء الجملة، وسأقوم باستقراء الباقي؟ًشكراً جزيلا.
المحلول
ومجرد تعيين المتغيرات مثل ذلك:
var win = window;
var doc = document;
لا يمكنك تعيين win.loc
دون تعديل الكائن window
في هذه الحالة بالرغم من ذلك. أيضا، الكائن الإطار هو خاص لأنه بعد تعيين win
، عليك أن تكون قادرا على الحصول عليه مع win.win
أو win.win.win
وهلم جرا (window
هو موضوع عالمي).
في أي حال، كنت <م> يمكن م> لا يزال تعيين loc
إلى كائن window
:
win.loc = window.location;
// Can now be referenced as:
loc; // (window is the global object)
win.loc;
win.location;
window.location;
والآن هذه هي الطريقة لفعل ما كنت طالبا. الأرجح أنك <م> لا ينبغي م> قيام بذلك. عادة، يتم تعريف الأطر لاستخدام ما يصل متغير عالمي واحد فقط، مع اسم مناسب:
var Blixt = (function () {
var localVariable = 123;
return {
loc: window.location,
myFunc: function () {
alert(localVariable);
}
};
})();
وجميع هذه الاشياء معقدة جدا إذا كنت لم تكن مألوفة مع جافا سكريبت على الرغم من ذلك انها ليست مشروع جيد لتبدأ إذا كنت جديدا على جافا سكريبت.
نصائح أخرى
** ملاحظة: ** هذا في الحقيقة طلب لتوضيح إجابة بليكست أعلاه، والتي لا تتناسب مع تعليق واحد.
حسنًا، شكرًا - هذه إجابة جيدة جدًا.وأود فقط أن أقدم بعض التوضيحات لذلك:
إذا قمت بتحديد الأسماء المستعارة باستخدام بناء الجملة الذي قدمته أعلاه،
win.loc
سوف تتصرف بالضبط كمثلwindow.location
دون أي استثناءات؟(مجرد التأكد من)تابعت أغلبه لكن الجزء الذي فيه
Blixt
وظيفة لم أفهم.ما هو السلوك/النتيجة المتوقعة من تحديد هذه الوظيفة؟أنا أكون نوعا ما جديد على JS، ولكن لماذا هذه ليست فكرة جيدة؟ما هي العواقب السلبية التي يمكن أن يكون لها؟أنا فقط أتطلع إلى القيام بأشياء مثل
C-l javascript:win.loc=doc.ref<ENTER>
بالنسبة لعلامة تبويب تم فتحها عن طريق النقر فوق CTRL على رابط في علامة تبويب أخرى، لا يوجد شيء معقد للغاية.بالحديث عن ذلك، ولدي شعور بأن هذا قد يختلف من متصفح إلى آخر، ولكن هل هناك أي طريقة ممكنة بالنسبة لي لتحديد
js:
مخطط URI وتعيينه إلىjavascript:
واحد؟شكرا على الإجابة العظيمة.