سؤال

هدفي هو إنشاء ما يشبه "مكتبة جافا سكريبت"، إذا أمكن تسميتها بهذا الاسم.أنوي استخدامه فقط لمعالجة الصفحات أثناء تصفح الويب، وتحميله ديناميكيًا كبرنامج نصي لـ 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: واحد؟شكرا على الإجابة العظيمة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top