Hướng dẫn how do you create a new object from a class in javascript? - làm thế nào để bạn tạo một đối tượng mới từ một lớp trong javascript?

Các lớp là một mẫu để tạo đối tượng. Họ gói gọn dữ liệu với mã để làm việc trên dữ liệu đó. Các lớp trong JS được xây dựng trên các nguyên mẫu nhưng cũng có một số cú pháp và ngữ nghĩa không được chia sẻ với ngữ nghĩa giống như lớp ES5.

Show

Xác định các lớp học

Trên thực tế, các lớp là "các hàm đặc biệt" và giống như bạn có thể xác định các biểu thức chức năng và khai báo chức năng, cú pháp lớp có hai thành phần: biểu thức lớp và khai báo lớp.

Tuyên bố lớp học

Một cách để xác định một lớp là sử dụng khai báo lớp. Để khai báo một lớp, bạn sử dụng từ khóa

const p = new Rectangle(); // ReferenceError

class Rectangle {}
8 với tên của lớp ("hình chữ nhật" ở đây).class declaration. To declare a class, you use the
const p = new Rectangle(); // ReferenceError

class Rectangle {}
8 keyword with the name of the class ("Rectangle" here).

class Rectangle {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }
}

Kéo

Một sự khác biệt quan trọng giữa khai báo chức năng và khai báo lớp là trong khi các hàm có thể được gọi trong mã xuất hiện trước khi chúng được xác định, các lớp phải được xác định trước khi chúng có thể được xây dựng. Mã như sau sẽ ném

const p = new Rectangle(); // ReferenceError

class Rectangle {}
9:function declarations and class declarations is that while functions can be called in code that appears before they are defined, classes must be defined before they can be constructed. Code like the following will throw a
const p = new Rectangle(); // ReferenceError

class Rectangle {}
9:

const p = new Rectangle(); // ReferenceError

class Rectangle {}

Điều này xảy ra bởi vì trong khi lớp được nâng các giá trị của nó không được khởi tạo.

Biểu thức lớp học

Một biểu thức lớp là một cách khác để xác định một lớp. Biểu thức lớp có thể được đặt tên hoặc không tên. Tên được đặt cho một biểu thức lớp được đặt tên là cục bộ với cơ thể của lớp. Tuy nhiên, nó có thể được truy cập thông qua thuộc tính

// unnamed
let Rectangle = class {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }
};
console.log(Rectangle.name);
// output: "Rectangle"

// named
Rectangle = class Rectangle2 {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }
};
console.log(Rectangle.name);
// output: "Rectangle2"
0.class expression is another way to define a class. Class expressions can be named or unnamed. The name given to a named class expression is local to the class's body. However, it can be accessed via the
// unnamed
let Rectangle = class {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }
};
console.log(Rectangle.name);
// output: "Rectangle"

// named
Rectangle = class Rectangle2 {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }
};
console.log(Rectangle.name);
// output: "Rectangle2"
0 property.

// unnamed
let Rectangle = class {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }
};
console.log(Rectangle.name);
// output: "Rectangle"

// named
Rectangle = class Rectangle2 {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }
};
console.log(Rectangle.name);
// output: "Rectangle2"

LƯU Ý: Các biểu thức lớp phải được khai báo trước khi chúng có thể được sử dụng (chúng phải tuân theo các hạn chế kéo tương tự như được mô tả trong phần khai báo lớp). Class expressions must be declared before they can be used (they are subject to the same hoisting restrictions as described in the class declarations section).

Định nghĩa cơ thể và phương pháp

Cơ thể của một lớp là phần nằm trong ngoặc xoăn

// unnamed
let Rectangle = class {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }
};
console.log(Rectangle.name);
// output: "Rectangle"

// named
Rectangle = class Rectangle2 {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }
};
console.log(Rectangle.name);
// output: "Rectangle2"
1. Đây là nơi bạn xác định các thành viên lớp, chẳng hạn như phương thức hoặc hàm tạo.

Chế độ nghiêm ngặt

Cơ thể của một lớp được thực thi ở chế độ nghiêm ngặt, tức là, mã được viết ở đây phải chịu cú pháp nghiêm ngặt hơn để tăng hiệu suất, một số lỗi im lặng sẽ được ném và một số từ khóa được dành cho các phiên bản trong tương lai của Ecmascript.

Người xây dựng

Phương thức Constructor là một phương thức đặc biệt để tạo và khởi tạo một đối tượng được tạo bằng

const p = new Rectangle(); // ReferenceError

class Rectangle {}
8. Chỉ có thể có một phương pháp đặc biệt với tên "Constructor" trong một lớp. Một
// unnamed
let Rectangle = class {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }
};
console.log(Rectangle.name);
// output: "Rectangle"

// named
Rectangle = class Rectangle2 {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }
};
console.log(Rectangle.name);
// output: "Rectangle2"
3 sẽ được ném nếu lớp chứa nhiều hơn một lần xuất hiện của phương thức
// unnamed
let Rectangle = class {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }
};
console.log(Rectangle.name);
// output: "Rectangle"

// named
Rectangle = class Rectangle2 {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }
};
console.log(Rectangle.name);
// output: "Rectangle2"
4.

Một hàm tạo có thể sử dụng từ khóa

// unnamed
let Rectangle = class {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }
};
console.log(Rectangle.name);
// output: "Rectangle"

// named
Rectangle = class Rectangle2 {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }
};
console.log(Rectangle.name);
// output: "Rectangle2"
5 để gọi hàm tạo của siêu lớp.

Khối khởi tạo tĩnh

Các khối khởi tạo lớp

// unnamed
let Rectangle = class {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }
};
console.log(Rectangle.name);
// output: "Rectangle"

// named
Rectangle = class Rectangle2 {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }
};
console.log(Rectangle.name);
// output: "Rectangle2"
6 cho phép khởi tạo linh hoạt các thuộc tính
// unnamed
let Rectangle = class {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }
};
console.log(Rectangle.name);
// output: "Rectangle"

// named
Rectangle = class Rectangle2 {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }
};
console.log(Rectangle.name);
// output: "Rectangle2"
6 bao gồm đánh giá các câu lệnh trong quá trình khởi tạo và cấp quyền truy cập vào phạm vi riêng.

Nhiều khối tĩnh có thể được khai báo và chúng có thể được xen kẽ với khai báo các thuộc tính và phương thức tĩnh (tất cả các mục tĩnh được đánh giá theo thứ tự khai báo).

Phương pháp nguyên mẫu

Xem thêm Định nghĩa phương pháp.

class Rectangle {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }
  // Getter
  get area() {
    return this.calcArea();
  }
  // Method
  calcArea() {
    return this.height * this.width;
  }
}

const square = new Rectangle(10, 10);

console.log(square.area); // 100

Phương pháp máy phát điện

Xem thêm Trình lặp và máy phát điện.

class Polygon {
  constructor(...sides) {
    this.sides = sides;
  }
  // Method
  *getSides() {
    for (const side of this.sides) {
      yield side;
    }
  }
}

const pentagon = new Polygon(1,2,3,4,5);

console.log([...pentagon.getSides()]); // [1,2,3,4,5]

Phương pháp và tính chất tĩnh

Từ khóa tĩnh xác định một phương thức hoặc thuộc tính tĩnh cho một lớp. Các thành viên tĩnh (thuộc tính và phương thức) được gọi mà không cần khởi tạo lớp của họ và không thể được gọi thông qua một thể hiện lớp. Các phương thức tĩnh thường được sử dụng để tạo các chức năng tiện ích cho một ứng dụng, trong khi các thuộc tính tĩnh rất hữu ích cho bộ đệm, cấu hình cố định hoặc bất kỳ dữ liệu nào khác mà bạn không cần phải được sao chép trên các trường hợp.cannot be called through a class instance. Static methods are often used to create utility functions for an application, whereas static properties are useful for caches, fixed-configuration, or any other data you don't need to be replicated across instances.

class Point {
  constructor(x, y) {
    this.x = x;
    this.y = y;
  }

  static displayName = "Point";
  static distance(a, b) {
    const dx = a.x - b.x;
    const dy = a.y - b.y;

    return Math.hypot(dx, dy);
  }
}

const p1 = new Point(5, 5);
const p2 = new Point(10, 10);
p1.displayName; // undefined
p1.distance;    // undefined
p2.displayName; // undefined
p2.distance;    // undefined

console.log(Point.displayName);      // "Point"
console.log(Point.distance(p1, p2)); // 7.0710678118654755

Liên kết // unnamed let Rectangle = class { constructor(height, width) { this.height = height; this.width = width; } }; console.log(Rectangle.name); // output: "Rectangle" // named Rectangle = class Rectangle2 { constructor(height, width) { this.height = height; this.width = width; } }; console.log(Rectangle.name); // output: "Rectangle2" 8 với phương pháp nguyên mẫu và tĩnh

Khi phương thức tĩnh hoặc nguyên mẫu được gọi mà không có giá trị cho

// unnamed
let Rectangle = class {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }
};
console.log(Rectangle.name);
// output: "Rectangle"

// named
Rectangle = class Rectangle2 {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }
};
console.log(Rectangle.name);
// output: "Rectangle2"
8, chẳng hạn như bằng cách gán phương thức cho một biến và sau đó gọi nó, giá trị
// unnamed
let Rectangle = class {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }
};
console.log(Rectangle.name);
// output: "Rectangle"

// named
Rectangle = class Rectangle2 {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }
};
console.log(Rectangle.name);
// output: "Rectangle2"
8 sẽ là
class Rectangle {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }
  // Getter
  get area() {
    return this.calcArea();
  }
  // Method
  calcArea() {
    return this.height * this.width;
  }
}

const square = new Rectangle(10, 10);

console.log(square.area); // 100
1 bên trong phương thức. Hành vi này sẽ giống nhau ngay cả khi chỉ thị
class Rectangle {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }
  // Getter
  get area() {
    return this.calcArea();
  }
  // Method
  calcArea() {
    return this.height * this.width;
  }
}

const square = new Rectangle(10, 10);

console.log(square.area); // 100
2 không có mặt, bởi vì mã trong ranh giới cú pháp của cơ thể
const p = new Rectangle(); // ReferenceError

class Rectangle {}
8 luôn được thực thi ở chế độ nghiêm ngặt.

class Animal {
  speak() {
    return this;
  }
  static eat() {
    return this;
  }
}

const obj = new Animal();
obj.speak(); // the Animal object
const speak = obj.speak;
speak(); // undefined

Animal.eat() // class Animal
const eat = Animal.eat;
eat(); // undefined

Nếu chúng ta viết lại ở trên bằng cách sử dụng cú pháp dựa trên chức năng truyền thống ở chế độ không đóng cửa, thì các cuộc gọi phương thức

// unnamed
let Rectangle = class {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }
};
console.log(Rectangle.name);
// output: "Rectangle"

// named
Rectangle = class Rectangle2 {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }
};
console.log(Rectangle.name);
// output: "Rectangle2"
8 sẽ tự động được liên kết với giá trị
// unnamed
let Rectangle = class {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }
};
console.log(Rectangle.name);
// output: "Rectangle"

// named
Rectangle = class Rectangle2 {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }
};
console.log(Rectangle.name);
// output: "Rectangle2"
8 ban đầu, theo mặc định là đối tượng toàn cầu. Trong chế độ nghiêm ngặt, tự động hóa sẽ không xảy ra; Giá trị của
// unnamed
let Rectangle = class {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }
};
console.log(Rectangle.name);
// output: "Rectangle"

// named
Rectangle = class Rectangle2 {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }
};
console.log(Rectangle.name);
// output: "Rectangle2"
8 vẫn được thông qua.

function Animal() { }

Animal.prototype.speak = function () {
  return this;
}

Animal.eat = function () {
  return this;
}

const obj = new Animal();
const speak = obj.speak;
speak(); // global object (in non–strict mode)

const eat = Animal.eat;
eat(); // global object (in non-strict mode)

Thuộc tính thể hiện

Thuộc tính thể hiện phải được xác định bên trong các phương thức lớp:

class Rectangle {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }
}

Tuyên bố thực địa

Tuyên bố lĩnh vực công cộng

Với cú pháp khai báo trường JavaScript, ví dụ trên có thể được viết là:

class Rectangle {
  height = 0;
  width;
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }
}

Chúng tôi không cần các từ khóa như

class Rectangle {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }
  // Getter
  get area() {
    return this.calcArea();
  }
  // Method
  calcArea() {
    return this.height * this.width;
  }
}

const square = new Rectangle(10, 10);

console.log(square.area); // 100
7,
class Rectangle {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }
  // Getter
  get area() {
    return this.calcArea();
  }
  // Method
  calcArea() {
    return this.height * this.width;
  }
}

const square = new Rectangle(10, 10);

console.log(square.area); // 100
8 hoặc
class Rectangle {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }
  // Getter
  get area() {
    return this.calcArea();
  }
  // Method
  calcArea() {
    return this.height * this.width;
  }
}

const square = new Rectangle(10, 10);

console.log(square.area); // 100
9 để khai báo các trường.

Bằng cách tuyên bố các trường trước, các định nghĩa lớp trở nên tự ghi chép hơn và các trường luôn luôn có mặt.

Như đã thấy ở trên, các trường có thể được khai báo có hoặc không có giá trị mặc định.

Xem các trường lớp công cộng để biết thêm thông tin.

Tuyên bố lĩnh vực tư nhân

Sử dụng các trường riêng, định nghĩa có thể được tinh chỉnh như dưới đây.

const p = new Rectangle(); // ReferenceError

class Rectangle {}
0

Đó là một lỗi để tham khảo các trường riêng từ bên ngoài lớp; Chúng chỉ có thể được đọc hoặc viết trong cơ thể lớp. Bằng cách xác định những thứ không hiển thị bên ngoài lớp, bạn đảm bảo rằng người dùng của lớp bạn không thể phụ thuộc vào nội bộ, có thể thay đổi từ phiên bản này sang phiên bản khác.

LƯU Ý: Các trường riêng chỉ có thể được khai báo về phía trước trong khai báo trường. Private fields can only be declared up-front in a field declaration.

Các trường riêng không thể được tạo sau đó thông qua việc gán cho chúng, cách mà các thuộc tính bình thường có thể.

Để biết thêm thông tin, hãy xem các tính năng của lớp riêng.

Phân loại phụ với class Polygon { constructor(...sides) { this.sides = sides; } // Method *getSides() { for (const side of this.sides) { yield side; } } } const pentagon = new Polygon(1,2,3,4,5); console.log([...pentagon.getSides()]); // [1,2,3,4,5] 0

Từ khóa

class Polygon {
  constructor(...sides) {
    this.sides = sides;
  }
  // Method
  *getSides() {
    for (const side of this.sides) {
      yield side;
    }
  }
}

const pentagon = new Polygon(1,2,3,4,5);

console.log([...pentagon.getSides()]); // [1,2,3,4,5]
0 được sử dụng trong các khai báo lớp hoặc biểu thức lớp để tạo một lớp như một đứa trẻ của một lớp khác.

const p = new Rectangle(); // ReferenceError

class Rectangle {}
1

Nếu có một hàm tạo có trong lớp con, trước tiên nó cần gọi Super () trước khi sử dụng "This".

Người ta cũng có thể mở rộng các "lớp" dựa trên chức năng truyền thống:

const p = new Rectangle(); // ReferenceError

class Rectangle {}
2

Lưu ý rằng các lớp không thể mở rộng các đối tượng thường xuyên (không thể xây dựng). Nếu bạn muốn kế thừa từ một đối tượng thông thường, thay vào đó bạn có thể sử dụng

class Polygon {
  constructor(...sides) {
    this.sides = sides;
  }
  // Method
  *getSides() {
    for (const side of this.sides) {
      yield side;
    }
  }
}

const pentagon = new Polygon(1,2,3,4,5);

console.log([...pentagon.getSides()]); // [1,2,3,4,5]
2:

const p = new Rectangle(); // ReferenceError

class Rectangle {}
3

Loài

Bạn có thể muốn trả về các đối tượng

class Polygon {
  constructor(...sides) {
    this.sides = sides;
  }
  // Method
  *getSides() {
    for (const side of this.sides) {
      yield side;
    }
  }
}

const pentagon = new Polygon(1,2,3,4,5);

console.log([...pentagon.getSides()]); // [1,2,3,4,5]
3 trong lớp mảng xuất phát của bạn
class Polygon {
  constructor(...sides) {
    this.sides = sides;
  }
  // Method
  *getSides() {
    for (const side of this.sides) {
      yield side;
    }
  }
}

const pentagon = new Polygon(1,2,3,4,5);

console.log([...pentagon.getSides()]); // [1,2,3,4,5]
4. Mô hình loài cho phép bạn ghi đè các nhà xây dựng mặc định.

Ví dụ: khi sử dụng các phương thức như

class Polygon {
  constructor(...sides) {
    this.sides = sides;
  }
  // Method
  *getSides() {
    for (const side of this.sides) {
      yield side;
    }
  }
}

const pentagon = new Polygon(1,2,3,4,5);

console.log([...pentagon.getSides()]); // [1,2,3,4,5]
5 trả về hàm tạo mặc định, bạn muốn các phương thức này trả về đối tượng cha mẹ
class Polygon {
  constructor(...sides) {
    this.sides = sides;
  }
  // Method
  *getSides() {
    for (const side of this.sides) {
      yield side;
    }
  }
}

const pentagon = new Polygon(1,2,3,4,5);

console.log([...pentagon.getSides()]); // [1,2,3,4,5]
3, thay vì đối tượng
class Polygon {
  constructor(...sides) {
    this.sides = sides;
  }
  // Method
  *getSides() {
    for (const side of this.sides) {
      yield side;
    }
  }
}

const pentagon = new Polygon(1,2,3,4,5);

console.log([...pentagon.getSides()]); // [1,2,3,4,5]
4. Biểu tượng
class Polygon {
  constructor(...sides) {
    this.sides = sides;
  }
  // Method
  *getSides() {
    for (const side of this.sides) {
      yield side;
    }
  }
}

const pentagon = new Polygon(1,2,3,4,5);

console.log([...pentagon.getSides()]); // [1,2,3,4,5]
8 cho phép bạn làm điều này:

const p = new Rectangle(); // ReferenceError

class Rectangle {}
4

Các cuộc gọi siêu lớp với // unnamed let Rectangle = class { constructor(height, width) { this.height = height; this.width = width; } }; console.log(Rectangle.name); // output: "Rectangle" // named Rectangle = class Rectangle2 { constructor(height, width) { this.height = height; this.width = width; } }; console.log(Rectangle.name); // output: "Rectangle2" 5

Từ khóa

// unnamed
let Rectangle = class {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }
};
console.log(Rectangle.name);
// output: "Rectangle"

// named
Rectangle = class Rectangle2 {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }
};
console.log(Rectangle.name);
// output: "Rectangle2"
5 được sử dụng để gọi các phương thức tương ứng của siêu lớp. Đây là một lợi thế so với kế thừa dựa trên nguyên mẫu.

const p = new Rectangle(); // ReferenceError

class Rectangle {}
5

Mix-ins

Tóm tắt các lớp con hoặc hỗn hợp là các mẫu cho các lớp. Một lớp Ecmascript chỉ có thể có một siêu lớp duy nhất, do đó, nhiều kế thừa từ các lớp công cụ, chẳng hạn, là không thể. Các chức năng phải được cung cấp bởi siêu lớp.

Một chức năng có siêu lớp dưới dạng đầu vào và lớp con mở rộng siêu lớp đó làm đầu ra có thể được sử dụng để thực hiện các bản phối trong ecmascript:

const p = new Rectangle(); // ReferenceError

class Rectangle {}
6

Một lớp sử dụng các bản phối này sau đó có thể được viết như thế này:

const p = new Rectangle(); // ReferenceError

class Rectangle {}
7

Chạy lại một định nghĩa lớp học

Một lớp học không thể được xác định lại. Cố gắng làm như vậy tạo ra một

// unnamed
let Rectangle = class {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }
};
console.log(Rectangle.name);
// output: "Rectangle"

// named
Rectangle = class Rectangle2 {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }
};
console.log(Rectangle.name);
// output: "Rectangle2"
3.

Nếu bạn đang thử nghiệm mã trong trình duyệt web, chẳng hạn như bảng điều khiển web Firefox (Công cụ> Nhà phát triển web> Bảng điều khiển web) và bạn 'chạy' định nghĩa về một lớp có cùng tên hai lần, bạn sẽ nhận được

class Point {
  constructor(x, y) {
    this.x = x;
    this.y = y;
  }

  static displayName = "Point";
  static distance(a, b) {
    const dx = a.x - b.x;
    const dy = a.y - b.y;

    return Math.hypot(dx, dy);
  }
}

const p1 = new Point(5, 5);
const p2 = new Point(10, 10);
p1.displayName; // undefined
p1.distance;    // undefined
p2.displayName; // undefined
p2.distance;    // undefined

console.log(Point.displayName);      // "Point"
console.log(Point.distance(p1, p2)); // 7.0710678118654755
2. .Tools > Web Developer > Web Console) and you 'Run' a definition of a class with the same name twice, you'll get a
class Point {
  constructor(x, y) {
    this.x = x;
    this.y = y;
  }

  static displayName = "Point";
  static distance(a, b) {
    const dx = a.x - b.x;
    const dy = a.y - b.y;

    return Math.hypot(dx, dy);
  }
}

const p1 = new Point(5, 5);
const p2 = new Point(10, 10);
p1.displayName; // undefined
p1.distance;    // undefined
p2.displayName; // undefined
p2.distance;    // undefined

console.log(Point.displayName);      // "Point"
console.log(Point.distance(p1, p2)); // 7.0710678118654755
2. (See further discussion of this issue in bug 1428672.) Doing something similar in Chrome Developer Tools gives you a message like
class Point {
  constructor(x, y) {
    this.x = x;
    this.y = y;
  }

  static displayName = "Point";
  static distance(a, b) {
    const dx = a.x - b.x;
    const dy = a.y - b.y;

    return Math.hypot(dx, dy);
  }
}

const p1 = new Point(5, 5);
const p2 = new Point(10, 10);
p1.displayName; // undefined
p1.distance;    // undefined
p2.displayName; // undefined
p2.distance;    // undefined

console.log(Point.displayName);      // "Point"
console.log(Point.distance(p1, p2)); // 7.0710678118654755
3.

Thông số kỹ thuật

Sự chỉ rõ
Đặc tả ngôn ngữ Ecmascript # Sec-Class-Deellitions
# sec-class-definitions

Tính tương thích của trình duyệt web

Bảng BCD chỉ tải trong trình duyệt

Xem thêm

Làm thế nào để bạn tạo các đối tượng mới từ lớp?

Để tạo một đối tượng chính, chỉ định tên lớp, theo sau là tên đối tượng và sử dụng từ khóa mới:..
Thí dụ. Tạo một đối tượng gọi là "myobj" và in giá trị của x: lớp công khai chính {int x = 5; công khai void void main (String [] args) {Main myObj = new main (); Hệ thống. ....
Thí dụ. ....
Second.java..

Làm thế nào để bạn tạo một đối tượng mới trong JavaScript?

Tạo một đối tượng JavaScript Tạo một đối tượng duy nhất, sử dụng một đối tượng theo nghĩa đen. Tạo một đối tượng duy nhất, với từ khóa mới. Xác định một hàm tạo đối tượng, và sau đó tạo các đối tượng thuộc loại được xây dựng. Tạo một đối tượng bằng cách sử dụng Object.Create ().Create a single object, using an object literal. Create a single object, with the keyword new . Define an object constructor, and then create objects of the constructed type. Create an object using Object.create() .

Chúng ta có thể tạo đối tượng bên trong lớp JavaScript không?

Có. Bạn chỉ cần sử dụng mới bên trong phương thức tĩnh của mình để tạo đối tượng.Điều này thường được thực hiện bằng cách chuyển một đối tượng cho hàm tạo và bất kỳ thuộc tính nào có trên đối tượng, chúng được sử dụng để khởi tạo các tính năng của đối tượng. You just use new inside your static method to create the object. This is often done by passing in an object to the constructor and whatever properties are present on the object, those are used to initialize features of the object.

Làm thế nào để bạn tạo một đối tượng mới?

Phương thức Object.Create () tạo một đối tượng mới, sử dụng một đối tượng hiện có làm nguyên mẫu của đối tượng mới được tạo.Object. create() method creates a new object, using an existing object as the prototype of the newly created object.