jsrosetta

Collections

Object

Object literal và method trong Node.js so với struct/class có method riêng trong Go, Rust, Swift và Java.

Phiên bản tối thiểu
Node.js ≥ 12.20Go ≥ 1.0Rust ≥ 1.58Swift ≥ 5.1Java ≥ 25
Đã chạy thử trên
Node.js 24.12.0Go 1.27.1Rust 1.98.1Swift 6.2.4Java 25.0.4.1

Code Node.js là ES module: lưu file .mjs hoặc đặt "type": "module" trong package.json.

Object literal trong Node.js gói cả dữ liệu lẫn method trong cùng một giá trị. Go tách hai việc: struct chỉ chứa dữ liệu, còn hành vi được gắn vào bằng hàm có receiver (thường là con trỏ tới struct đó) khai báo ở nơi khác. Trong 5 ngôn ngữ này, chỉ Rust tách y như Go: field nằm trong struct, còn method sống trong khối impl riêng. Swift thì khác — method viết ngay trong thân struct, cùng chỗ với property, giống cách Java gộp field và method trong thân class; điểm khác biệt của Swift so với Java chỉ là tự sinh constructor mặc định (memberwise initializer) nên không cần viết tay. Java gộp lại giống object literal của JS: một class chứa cả field lẫn method, chỉ khác là phải khai báo kiểu tường minh.

Object literal với property và method

const obj = {
  someProperties: {
    foo: 'bar'
  },
  someMethod: (prop) => {
    return obj.someProperties[prop]
  }
}
 
let item = obj.someProperties['foo']
console.log(item) // bar
 
item = obj.someMethod('foo')
console.log(item) // bar

Tham khảo: github.com/miguelmota/golang-for-nodejs-developers#objects