وصف الطريقة:
إرجاع كائن عازلة جديد ، ومشاركة المخزن المؤقت الجديد والمخزن المؤقت القديم في الذاكرة.
ولكن يتم تقليله من خلال إزاحة فهرس البدء والنهاية. (على سبيل المثال ، إذا كان هناك 1 إلى 10 بايت في المخزن المؤقت ، فإننا نريد فقط 4-8 بايت ، حتى نتمكن من استخدام هذه الوظيفة buf.slice (4،8) ، لأنها تشترك في ذاكرة واحدة ، لذلك لن تستهلك الذاكرة.)
نظرًا لمشاركة الذاكرة ، بعد تعديل المخزن المؤقت الجديد ، سيتم أيضًا تعديل محتوى المخزن المؤقت القديم.
القواعد:
نسخة الكود كما يلي:
buffer.slice ([start] ، [end])
تلقي المعلمات:
بدء تشغيل وضعية ، افتراضي
وضع نهاية النهاية ، الافتراضي لطول المخزن المؤقت
مثال:
قم بإنشاء مخزن مؤقت باستخدام alphabet ASCII ، واستخدم وظيفة الشريحة ، ثم تعديل بايت في المخزن المؤقت الأصلي.
نسخة الكود كما يلي:
var buf1 = New Buffer (26) ؛
لـ (var i = 0 ؛ i <26 ؛ i ++) {
buf1 [i] = i + 97 ؛ // 97 هو ASCII
}
var buf2 = buf1.slice (0 ، 3) ؛
console.log (buf2.ToString ('Ascii' ، 0 ، buf2.length)) ؛
BUF1 [0] = 33 ؛
console.log (buf2.ToString ('Ascii' ، 0 ، buf2.length)) ؛
// ABC
//! قبل الميلاد
رمز المصدر:
نسخة الكود كما يلي:
.
// لا يتبع المعيار الجديد للرمي على فهارس النطاق.
buffer.prototype.slice = function (start ، end) {
var len = this.length ؛
ابدأ = ~~ ابدأ ؛
End = util.Isunded (End)؟ لين: ~~ نهاية ؛
إذا (ابدأ <0) {
ابدأ += لين ؛
إذا (ابدأ <0)
ابدأ = 0 ؛
} آخر إذا (ابدأ> لين) {
ابدأ = لين ؛
}
if (end <0) {
نهاية += لين ؛
إذا (النهاية <0)
نهاية = 0 ؛
} آخر إذا (end> len) {
نهاية = لين ؛
}
إذا (نهاية <ابدأ)
نهاية = ابدأ ؛
var buf = new NativeBuffer () ؛
Sliceonto (هذا ، buf ، ابدأ ، نهاية) ؛
buf.length = end - start ؛
إذا (buf.length> 0)
buf.parent = util.isundefined (this.parent)؟ هذا: هذا.
إرجاع buf ؛
} ؛