Thuộc tính
// -- someModule.js --
export default function [] {};
// -- main.js --
import someModule from "./someModule.js";
someModule.name; // "default"
3 của phiên bản // -- someModule.js --
export default function [] {};
// -- main.js --
import someModule from "./someModule.js";
someModule.name; // "default"
4 cho biết tên của hàm như được chỉ định khi nó được tạo hoặc có thể là // -- someModule.js --
export default function [] {};
// -- main.js --
import someModule from "./someModule.js";
someModule.name; // "default"
5 hoặc // -- someModule.js --
export default function [] {};
// -- main.js --
import someModule from "./someModule.js";
someModule.name; // "default"
6 [một chuỗi trống] đối với các hàm được tạo ẩn danhMột chuỗi
Thuộc tính thuộc tính của// -- someModule.js --
export default function [] {};
// -- main.js --
import someModule from "./someModule.js";
someModule.name; // "default"
7WritablenoEnumerablenoConfigurableyesGhi chú. Trong các triển khai không chuẩn, trước ES2015, thuộc tính
// -- someModule.js --
export default function [] {};
// -- main.js --
import someModule from "./someModule.js";
someModule.name; // "default"
8 cũng là // -- someModule.js --
export default function [] {};
// -- main.js --
import someModule from "./someModule.js";
someModule.name; // "default"
9Thuộc tính
// -- someModule.js --
export default function [] {};
// -- main.js --
import someModule from "./someModule.js";
someModule.name; // "default"
3 của hàm có thể được sử dụng để xác định hàm trong các công cụ gỡ lỗi hoặc thông báo lỗi. Nó không có ý nghĩa ngữ nghĩa đối với chính ngôn ngữ đóThuộc tính
// -- someModule.js --
export default function [] {};
// -- main.js --
import someModule from "./someModule.js";
someModule.name; // "default"
3 chỉ đọc và không thể thay đổi bởi toán tử gánfunction someFunction[] {}
someFunction.name = 'otherFunction';
console.log[someFunction.name]; // someFunction
Để thay đổi nó, hãy sử dụng
// -- someModule.js --
export default function [] {};
// -- main.js --
import someModule from "./someModule.js";
someModule.name; // "default"
02Thuộc tính
// -- someModule.js --
export default function [] {};
// -- main.js --
import someModule from "./someModule.js";
someModule.name; // "default"
3 thường được suy ra từ cách xác định hàm. Trong các phần tiếp theo, chúng tôi sẽ mô tả các cách khác nhau để suy raThuộc tính
// -- someModule.js --
export default function [] {};
// -- main.js --
import someModule from "./someModule.js";
someModule.name; // "default"
3 trả về tên của một khai báo hàm// -- someModule.js --
export default function [] {};
// -- main.js --
import someModule from "./someModule.js";
someModule.name; // "default"
3Khai báo
// -- someModule.js --
export default function [] {};
// -- main.js --
import someModule from "./someModule.js";
someModule.name; // "default"
05 xuất hàm dưới dạng khai báo thay vì biểu thức. Nếu khai báo là ẩn danh, tên là // -- someModule.js --
export default function [] {};
// -- main.js --
import someModule from "./someModule.js";
someModule.name; // "default"
06// -- someModule.js --
export default function [] {};
// -- main.js --
import someModule from "./someModule.js";
someModule.name; // "default"
Các hàm được tạo bằng hàm tạo
// -- someModule.js --
export default function [] {};
// -- main.js --
import someModule from "./someModule.js";
someModule.name; // "default"
07 có tên "anonymous"// -- someModule.js --
export default function [] {};
// -- main.js --
import someModule from "./someModule.js";
someModule.name; // "default"
0Nếu biểu thức hàm được đặt tên, tên đó được sử dụng làm thuộc tính
// -- someModule.js --
export default function [] {};
// -- main.js --
import someModule from "./someModule.js";
someModule.name; // "default"
3// -- someModule.js --
export default function [] {};
// -- main.js --
import someModule from "./someModule.js";
someModule.name; // "default"
0Các biểu thức hàm ẩn danh được tạo bằng từ khóa
// -- someModule.js --
export default function [] {};
// -- main.js --
import someModule from "./someModule.js";
someModule.name; // "default"
09 hoặc các hàm mũi tên sẽ có tên là // -- someModule.js --
export default function [] {};
// -- main.js --
import someModule from "./someModule.js";
someModule.name; // "default"
00 [một chuỗi trống]// -- someModule.js --
export default function [] {};
// -- main.js --
import someModule from "./someModule.js";
someModule.name; // "default"
3Tuy nhiên, những trường hợp như vậy rất hiếm — thông thường, để tham chiếu đến biểu thức ở nơi khác, biểu thức hàm được gắn với một mã định danh khi nó được tạo [chẳng hạn như trong một khai báo biến]. Trong những trường hợp như vậy, tên có thể được suy ra, như một vài phần phụ sau đây chứng minh
Một trường hợp thực tế không thể suy ra tên là một hàm được trả về từ một hàm khác
// -- someModule.js --
export default function [] {};
// -- main.js --
import someModule from "./someModule.js";
someModule.name; // "default"
4Các biến và phương thức có thể suy ra tên của một hàm ẩn danh từ vị trí cú pháp của nó
// -- someModule.js --
export default function [] {};
// -- main.js --
import someModule from "./someModule.js";
someModule.name; // "default"
5Điều tương tự áp dụng cho nhiệm vụ
// -- someModule.js --
export default function [] {};
// -- main.js --
import someModule from "./someModule.js";
someModule.name; // "default"
6Các hàm trong bộ khởi tạo [giá trị mặc định] của , tham số mặc định, trường lớp, v.v. , sẽ kế thừa tên của định danh bị ràng buộc là
// -- someModule.js --
export default function [] {};
// -- main.js --
import someModule from "./someModule.js";
someModule.name; // "default"
3 của chúng// -- someModule.js --
export default function [] {};
// -- main.js --
import someModule from "./someModule.js";
someModule.name; // "default"
8// -- someModule.js --
export default function [] {};
// -- main.js --
import someModule from "./someModule.js";
someModule.name; // "default"
30// -- someModule.js --
export default function [] {};
// -- main.js --
import someModule from "./someModule.js";
someModule.name; // "default"
02 tạo ra một hàm có tên là "bị ràng buộc" cộng với tên hàm// -- someModule.js --
export default function [] {};
// -- main.js --
import someModule from "./someModule.js";
someModule.name; // "default"
31Khi sử dụng thuộc tính trình truy cập
// -- someModule.js --
export default function [] {};
// -- main.js --
import someModule from "./someModule.js";
someModule.name; // "default"
03 và // -- someModule.js --
export default function [] {};
// -- main.js --
import someModule from "./someModule.js";
someModule.name; // "default"
04, "get" hoặc "set" sẽ xuất hiện trong tên hàm// -- someModule.js --
export default function [] {};
// -- main.js --
import someModule from "./someModule.js";
someModule.name; // "default"
32Tên của một lớp tuân theo thuật toán giống như khai báo hàm và biểu thức
// -- someModule.js --
export default function [] {};
// -- main.js --
import someModule from "./someModule.js";
someModule.name; // "default"
33Cảnh báo. JavaScript sẽ chỉ đặt thuộc tính
// -- someModule.js --
export default function [] {};
// -- main.js --
import someModule from "./someModule.js";
someModule.name; // "default"
3 của hàm nếu một hàm không có thuộc tính riêng gọi là // -- someModule.js --
export default function [] {};
// -- main.js --
import someModule from "./someModule.js";
someModule.name; // "default"
3. Tuy nhiên, các thành viên tĩnh của lớp sẽ được đặt làm thuộc tính riêng của hàm tạo lớp và do đó ngăn không cho áp dụng // -- someModule.js --
export default function [] {};
// -- main.js --
import someModule from "./someModule.js";
someModule.name; // "default"
3 tích hợp. Xem bên dướiNếu một
// -- someModule.js --
export default function [] {};
// -- main.js --
import someModule from "./someModule.js";
someModule.name; // "default"
08 được sử dụng tên hàm và ký hiệu có phần mô tả, thì tên của phương thức là phần mô tả trong ngoặc vuông// -- someModule.js --
export default function [] {};
// -- main.js --
import someModule from "./someModule.js";
someModule.name; // "default"
34Các trường riêng tư và phương thức riêng tư có hàm băm [
// -- someModule.js --
export default function [] {};
// -- main.js --
import someModule from "./someModule.js";
someModule.name; // "default"
09] như một phần tên của chúng// -- someModule.js --
export default function [] {};
// -- main.js --
import someModule from "./someModule.js";
someModule.name; // "default"
35Bạn có thể sử dụng
// -- someModule.js --
export default function [] {};
// -- main.js --
import someModule from "./someModule.js";
someModule.name; // "default"
30 để kiểm tra "lớp" của một đối tượng// -- someModule.js --
export default function [] {};
// -- main.js --
import someModule from "./someModule.js";
someModule.name; // "default"
36Tuy nhiên, vì các thành viên tĩnh sẽ trở thành thuộc tính riêng của lớp, nên chúng ta không thể lấy tên lớp cho hầu như bất kỳ lớp nào có thuộc tính phương thức tĩnh
// -- someModule.js --
export default function [] {};
// -- main.js --
import someModule from "./someModule.js";
someModule.name; // "default"
31// -- someModule.js --
export default function [] {};
// -- main.js --
import someModule from "./someModule.js";
someModule.name; // "default"
37Với phương thức
// -- someModule.js --
export default function [] {};
// -- main.js --
import someModule from "./someModule.js";
someModule.name; // "default"
32, // -- someModule.js --
export default function [] {};
// -- main.js --
import someModule from "./someModule.js";
someModule.name; // "default"
33 không còn giữ tên lớp thực mà là tham chiếu đến đối tượng hàm // -- someModule.js --
export default function [] {};
// -- main.js --
import someModule from "./someModule.js";
someModule.name; // "default"
31. Việc cố gắng lấy lớp ________ 235 đến lớp ________ 236 hoàn toàn không cung cấp cho chúng ta tên lớp mà thay vào đó là tham chiếu đến phương thức lớp tĩnh. Ví dụ// -- someModule.js --
export default function [] {};
// -- main.js --
import someModule from "./someModule.js";
someModule.name; // "default"
38Do sự tồn tại của các trường tĩnh,
// -- someModule.js --
export default function [] {};
// -- main.js --
import someModule from "./someModule.js";
someModule.name; // "default"
3 có thể không phải là một hàm// -- someModule.js --
export default function [] {};
// -- main.js --
import someModule from "./someModule.js";
someModule.name; // "default"
39Nếu một lớp có một thuộc tính tĩnh được gọi là
// -- someModule.js --
export default function [] {};
// -- main.js --
import someModule from "./someModule.js";
someModule.name; // "default"
3, thì nó cũng sẽ có thể ghi được. Định nghĩa tích hợp trong trường hợp không có định nghĩa tĩnh tùy chỉnh là chỉ đọc// -- someModule.js --
export default function [] {};
// -- main.js --
import someModule from "./someModule.js";
someModule.name; // "default"
0Do đó, bạn không thể dựa vào thuộc tính
// -- someModule.js --
export default function [] {};
// -- main.js --
import someModule from "./someModule.js";
someModule.name; // "default"
3 tích hợp để luôn giữ tên của lớpCảnh báo. Hãy cẩn thận khi sử dụng thuộc tính
// -- someModule.js --
export default function [] {};
// -- main.js --
import someModule from "./someModule.js";
someModule.name; // "default"
3 với các phép biến đổi mã nguồn, chẳng hạn như các phép biến đổi được thực hiện bởi bộ nén JavaScript [bộ khai thác] hoặc bộ làm nhiễu. Những công cụ này thường được sử dụng như một phần của quy trình xây dựng JavaScript để giảm kích thước của chương trình trước khi triển khai chương trình đó vào sản xuất. Các phép biến đổi như vậy thường thay đổi tên của hàm khi xây dựngMã nguồn như
// -- someModule.js --
export default function [] {};
// -- main.js --
import someModule from "./someModule.js";
someModule.name; // "default"
1có thể được nén để
// -- someModule.js --
export default function [] {};
// -- main.js --
import someModule from "./someModule.js";
someModule.name; // "default"
2Trong phiên bản không nén, chương trình chạy vào nhánh trung thực và ghi nhật ký "'foo' là một phiên bản của 'Foo'" — trong khi đó, trong phiên bản nén, nó hoạt động khác và chạy vào nhánh khác. Nếu bạn dựa vào thuộc tính
// -- someModule.js --
export default function [] {};
// -- main.js --
import someModule from "./someModule.js";
someModule.name; // "default"
3, như trong ví dụ trên, hãy đảm bảo quy trình xây dựng của bạn không thay đổi tên hàm hoặc không cho rằng một hàm có một tên cụ thể