cuốn sách gpt4 ai đã làm

javascript - Vấn đề về phạm vi với các lớp lồng nhau

In lại Tác giả: Walker 123 Thời gian cập nhật: 28-11-2023 00:52:51 25 4
mua khóa gpt4 Nike

Tôi không thể truy cập các phương thức của các lớp lồng nhau. Đây là những gì tôi đã thử cho đến nay. Vấn đề chính là gọi TimeTask.execute(). Lỗi này chỉ ra rằng tác vụ không được xác định.

Uncaught TypeError: không xác định không phải là một hàm

Chương trình sẽ hiển thị số tăng dần trong mười lần chạy bộ đếm thời gian.

var TimeTask = Lớp mới({
khởi tạo: hàm (tùy chọn) {
this.counter = options.counter;
this.run = options.run;
this.onComplete = options.complete;
this.done = false;
},
thực thi: hàm() {
var me = cái này;
this.counter--;
if (this.done === false || this.counter <= 0) {
this.done = true;
me.onComplete.call(me);
} khác {
me.run.call(tôi);
}
}
});

var Hẹn giờ = Lớp mới ({
khởi tạo: hàm (tùy chọn) {
this.id = 0;
this.running = true;
this.count = 0;
this.delay = tùy chọn.delay || 1000;
this.tasks = options.tasks ||
},
bắt đầu: hàm () {
var me = cái này;
me.id = setInterval(hàm đánh dấu() {
if (!me.running) trả về;
for (var i = 0; i < me.tasks.length; i++) {
me.tasks[i].execute();
}
tôi.count++;
}, this.delay);
},
tạm dừng: chức năng tạm dừng() {
this.running = false;
trả lại cái này;
},
chạy: hàm chạy() {
this.running = true;
trả lại cái này;
},
dừng: chức năng dừng () {
clearInterval(this.id);
this.stopped = true;
trả lại cái này;
},
lịch trình: chức năng (nhiệm vụ) {
this.tasks.push(task);
}
});

var i = 0;
var t1 = Bộ hẹn giờ mới({
độ trễ: 1000,
nhiệm vụ: [
TimeTask mới({
chạy: hàm () {
document.getElementById('output').innerHTML = ParseInt(i++, 10);
},
onComplete: hàm () {
cảnh báo('XONG!');
},
quầy: 10
})]
});

t1.start();

câu trả lời hay nhất

Ôi chao. Không thể tin được là không ai mắc lỗi đánh máy trong TimeTask. Không có gì ngạc nhiên khi tôi liên tục nhận được các nguyên mẫu thay vì các phiên bản. Tôi đánh vần là "khởi tạo" mà không có chữ "i" thứ ba...

Dù sao, tôi đã giải quyết được vấn đề và mã rất tuyệt.

Để ý:Tôi sử dụng điều này làm cơ sở cho bộ đếm thời gian của mình-- https://Gist.github.com/NV/363465

var TimeTask = Lớp mới({
khởi tạo: hàm (tùy chọn) {
this.counter = options.counter || 0;
this.run = options.run;
this.onComplete = options.onComplete;
this.active = true;
this.isInfinite = this.counter === 0;
},
thực thi: hàm () {
if (!this.isInfinite && this.counter === 0) {
this.active = false;
if (this.onComplete !== không xác định) {
this.onComplete();
}
} khác {
this.run();
if (!this.isInfinite) {
this.counter--;
}
}
},
isActive: hàm () {
trả lại cái này.active;
}
});

var Hẹn giờ = Lớp mới ({
khởi tạo: hàm (tùy chọn) {
this.id = 0;
this.running = true;
this.count = 0;
this.delay = tùy chọn.delay || 1000;
this.tasks = options.tasks ||
Hẹn giờ.all.push (cái này);
},
bắt đầu: hàm () {
var me = cái này;
me.id = setInterval(hàm đánh dấu() {
if (!me.running) trả về;
for (var i = 0; i < me.tasks.length; i++) {
var task = me.tasks[i];
nếu (task.isActive()) {
task.execute();
} khác {
console.log('Nhiệm vụ đã hoàn thành...');
}
}
tôi.count++;
}, this.delay);
},
tạm dừng: chức năng tạm dừng() {
this.running = false;
trả lại cái này;
},
chạy: hàm chạy() {
this.running = true;
trả lại cái này;
},
dừng: chức năng dừng () {
clearInterval(this.id);
this.stopped = true;
trả lại cái này;
},
lịch trình: chức năng (nhiệm vụ) {
this.tasks.push(task);
}
});

Hẹn giờ.extend({
tất cả : [],
tạm dừng : chức năng tạm dừng() {
var all = Hẹn giờ.all;
for (var i = 0; i < all.length; i++) {
all[i].pause();
}
trả lại tất cả;
},
chạy : hàm run() {
var all = Hẹn giờ.all;
for (var i = 0; i < all.length; i++) {
all[i].run();
}
trả lại tất cả;
},
dừng : hàm dừng() {
var all = Hẹn giờ.all;
for (var i = 0; i < all.length; i++) {
all[i].stop();
}
trả lại tất cả;
}
});

hàm in(id, giá trị) {
document.getElementById(id).innerHTML = value;
}

var i = 0;
var t1 = Bộ hẹn giờ mới({
độ trễ: 100,
nhiệm vụ: [
TimeTask mới({
chạy: hàm () {
print('output1', String.fromCharCode(65 + i));
},
onComplete: hàm () {
console.log('Hoàn thành nhiệm vụ 1...');
},
quầy: 26
}),
TimeTask mới({
chạy: hàm () {
print('output2', ParseInt(i++, 10));
}
})]
});

t1.start();

// Sau 4 giây, dừng tất cả bộ tính giờ.
setTimeout(function() {
Hẹn giờ.stop();
}, 4000);


Về vấn đề phạm vi javascript với các lớp lồng nhau, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/26567808/

25 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress