aedev.net
  • Trang chủ
  • AI
  • Mobile
  • Flutter
  • React Native
  • Backend
  • DevOps
  • Hướng dẫn
No Result
View All Result
SAVED POSTS
aedev.net
  • Trang chủ
  • AI
  • Mobile
  • Flutter
  • React Native
  • Backend
  • DevOps
  • Hướng dẫn
No Result
View All Result
aedev.net
No Result
View All Result
Lập trình viên chuẩn bị phỏng vấn fresher React Native với laptop, điện thoại và thẻ câu hỏi

Array.isArray và instanceof: mảng từ realm khác được kiểm tra thế nào?

Suong Nguyen by Suong Nguyen
04/11/2026
in Phỏng vấn
0
585
SHARES
3.2k
VIEWS
Summarize with ChatGPTShare to Facebook

Trong nhiều đoạn code thông thường, value instanceof Array và Array.isArray(value) cho cùng kết quả. Điều đó dễ tạo cảm giác chúng tương đương. Một mảng được tạo ở ngữ cảnh JavaScript khác giúp thấy rõ câu hỏi mà mỗi phép kiểm tra đang trả lời.

Các snippet đã chạy bằng Node.js 24.18.1. Tài liệu MDN và Node vm hiện hành được đọc ngày 04/11/2026; bản tài liệu Node hiện hành không được dùng làm tuyên bố rằng máy thử đang chạy cùng phiên bản. Demo chỉ thực thi literal do bài viết cung cấp, không xây dịch vụ chạy code bên ngoài.

Tạo mảng ở một context khác

Lưu thành array_realm.cjs, chạy node array_realm.cjs:

const assert = require('node:assert/strict');
const vm = require('node:vm');

const local = [1, 2];
const foreign = vm.runInNewContext('[1, 2]');

assert.equal(local instanceof Array, true);
assert.equal(Array.isArray(local), true);
assert.equal(foreign instanceof Array, false);
assert.equal(Array.isArray(foreign), true);
assert.notEqual(Object.getPrototypeOf(foreign), Array.prototype);
console.log('cross-context array cases passed');

Tất cả assertion đã qua. Mảng foreign vẫn là mảng, nhưng prototype của nó không phải Array.prototype đang được dùng trong context ngoài. Câu hỏi về chuỗi prototype với constructor cụ thể khác câu hỏi giá trị có phải Array thật hay không.

Realm có thể hiểu đơn giản là một môi trường với các intrinsic như Array riêng. Ví dụ dùng Node vm để tạo tình huống nhỏ có thể chạy cục bộ; không khẳng định đã thử browser iframe, worker hoặc một bridge native nào.

Thử chiều ngược lại bằng object có prototype Array

Chạy snippet độc lập:

const assert = require('node:assert/strict');
const looksRelated = Object.create(Array.prototype);

assert.equal(looksRelated instanceof Array, true);
assert.equal(Array.isArray(looksRelated), false);
assert.equal(Array.isArray({0: 'a', length: 1}), false);
assert.equal(Array.isArray(null), false);
assert.equal(Array.isArray(new Uint8Array([1, 2])), false);
console.log('prototype and non-array cases passed');

Các case đã được kiểm tra. Một object có thuộc tính đánh số và length không tự trở thành Array. Typed array cũng là một kiểu dữ liệu khác; không nên dùng tên gọi chung “mảng” trong trao đổi để suy rằng mọi API kiểm tra đều trả cùng kết quả.

Object.create ở đây chỉ dùng để làm rõ giới hạn của kiểm tra prototype. Nó không phải cách tạo mảng để thay Array literal trong code sản phẩm. Những hành vi khác của object ấy không được kiểm chứng như một Array đầy đủ.

Dùng trong validation thế nào?

Nếu hợp đồng yêu cầu một Array JavaScript, Array.isArray thể hiện ý định trực tiếp và không phụ thuộc Array constructor của cùng realm. Nhưng kết quả true chưa cho biết phần tử có đúng kiểu, có lỗ, có trùng ID hoặc thỏa giới hạn số lượng hay không.

Ví dụ danh sách mã sản phẩm cần bước kiểm tra từng mã và chính sách về rỗng riêng. Không biến một phép kiểm tra container thành bằng chứng dữ liệu đã đạt schema. Trong bài, các assertion chỉ xác nhận nhận diện Array và một số đối chứng không phải Array.

Một câu trả lời phỏng vấn có thứ tự

Bắt đầu từ ví dụ local cho cùng kết quả, rồi đưa ra foreign array để chỉ ra khác biệt. Sau đó giải thích prototype và dùng object đối chứng để tránh kết luận một chiều rằng instanceof chỉ có thể báo false nhầm.

Không cần gọi mọi tình huống khác nhau là một lỗ hổng. Đầu tiên xác định dữ liệu có đi qua realm khác hay không và code đang cần kiểm tra dạng container hay quan hệ prototype. Nếu cần xác nhận mảng, chọn đúng API rồi kiểm tra nội dung theo hợp đồng nghiệp vụ.

Giữ fixture nhỏ và assertion cụ thể giúp câu trả lời đi xa hơn việc nhớ tên một method. Kết quả ở đây được kiểm chứng trên Node đã nêu, còn tích hợp browser hoặc framework thật cần các kiểm tra tương ứng với môi trường đó.

Nguồn tham khảo

  • MDN: Array.isArray và so sánh với instanceof
  • Node: vm và context JavaScript

Tags: ArrayJavaScriptPhỏng vấn
SummarizeShare234
Suong Nguyen

Suong Nguyen

Related Stories

Lập trình viên chuẩn bị phỏng vấn fresher React Native với laptop, điện thoại và thẻ câu hỏi

Vì sao map(parseInt) biến index thành radix?

by Suong Nguyen
03/11/2026
0

Theo dõi arguments của Array.map để giải thích kết quả 10, NaN, 2 và viết wrapper chốt radix thay vì truyền thẳng parseInt.

Lập trình viên chuẩn bị phỏng vấn fresher React Native với laptop, điện thoại và thẻ câu hỏi

Object.freeze chỉ đóng băng nông: giải thích bằng assertion

by Suong Nguyen
02/11/2026
0

Theo dõi reference trước và sau Object.freeze để giải thích vì sao object con vẫn đổi được, rồi kiểm tra lỗi ghi trong strict mode.

Lập trình viên chuẩn bị phỏng vấn fresher React Native với laptop, điện thoại và thẻ câu hỏi

Return trong finally có thể che cả return lẫn lỗi ban đầu

by Suong Nguyen
01/11/2026
0

Theo dõi luồng return và throw qua finally bằng ví dụ Node, rồi phân biệt block finally với callback Promise.finally.

Lập trình viên chuẩn bị phỏng vấn fresher React Native với laptop, điện thoại và thẻ câu hỏi

Vì sao Array(3).map không gọi callback ba lần?

by Suong Nguyen
31/10/2026
0

Phân biệt empty slot với undefined, dùng Array.from để tạo phần tử và tránh bẫy fill cùng một object.

Next Post
Minh hoạ style và layout trong React Native với màn hình mobile, spacing và typography

React Native ScrollView: tạo nút về đầu bằng ref và scrollTo

0 0 votes
Article Rating
Subscribe
Login
Notify of
guest
guest
0 Comments
Oldest
Newest Most Voted
AE Dev

AE Dev mang đến các bài viết về lập trình, mobile app, backend, frontend, WordPress và công nghệ, phù hợp cho developer muốn học hỏi và cập nhật kiến thức thực tế.

Recent Posts

  • React Native ScrollView: tạo nút về đầu bằng ref và scrollTo
  • Array.isArray và instanceof: mảng từ realm khác được kiểm tra thế nào?
  • Android LayoutParams nhận pixel: đổi dp đúng một lần

Categories

  • AI
  • Backend
  • Đánh giá
  • DevOps
  • Flutter
  • Hướng dẫn
  • Lập trình Mobile
  • Phỏng vấn
  • React Native
  • Uncategorized

Weekly Newsletter

  • Buy JNews
  • Support Forum
  • Pre-sale Question
  • Contact Us

© 2026 AE Dev - Blog công nghệ, lập trình và chia sẻ kiến thức IT.

Welcome Back!

Login to your account below

Forgotten Password?

Retrieve your password

Please enter your username or email address to reset your password.

Log In
No Result
View All Result
  • Trang chủ
  • AI
  • Mobile
  • React Native
  • Backend
  • DevOps
  • Hướng dẫn
  • Flutter

© 2026 AE Dev - Blog công nghệ, lập trình và chia sẻ kiến thức IT.

wpDiscuz
0
0
Would love your thoughts, please comment.x
()
x
| Reply