Tôi đã có ấn tượng rằng các chuỗi có các thuộc tính, chẳng hạn như match
. Tại sao console.dir('')
tuyên bố rằng ''
không có thuộc tính nào (ít nhất là trong Google Chrome)?Tại sao console.dir ('') in "không có thuộc tính"?
Trả lời
Đó là vì ''
là một chuỗi chữ, không phải là một thể hiện của các "lớp" String
. Vì các thuộc tính như match
được khai báo trên String.prototype
, bạn sẽ không thấy chúng khi sử dụng chuỗi ký tự. Nếu bạn sử dụng các nhà điều hành new
bạn sẽ thấy những gì bạn mong đợi:
var s = new String("hello");
console.dir(s);
Dưới đây là một ảnh chụp màn hình từ các công cụ nhà phát triển Chrome (chú ý sự cần thiết phải mở rộng prototype
, như phương pháp mà bạn đang mong đợi để xem được khai báo trên nguyên mẫu , không phải là đối tượng String
tự):
Hấp dẫn, kết quả của Firebug khá khác biệt. – lonesomeday
Hmm. Firebug dường như liệt kê các phương thức hai lần. Một lần cho chính đối tượng đó và một lần nữa cho 'prototype'. Nó cũng có vẻ bỏ qua thuộc tính 'length'. –
Tôi vẫn còn phần nào không thuyết phục ở đây. Tại sao ''' .match',' '' .constructor', v.v. không in 'undefined', và' dir ('') 'không in chúng? – Randomblue
Có thể cùng một lý do khiến console.dir (true) và console.dir (1234) nói rằng khi bạn vặn núm chỉ xuống dữ liệu. Có khả năng mã chỉ lặp qua các thuộc tính nếu nó là một đối tượng. Tại sao núm xoay đầu vẫn còn ở đó là không rõ ràng.
'Chuỗi' là các đối tượng,' Mảng' là các đối tượng, đối với 'Hàm', nó sẽ liệt kê' nguyên mẫu', rất đặc biệt. Có lẽ chỉ là một số phép thuật 'console.dir'? 'console.log' cũng khá kỳ diệu (như trên DOMElements). Đặc tả của Firefox rất không hữu ích. – Halcyon
"" instanceof Chuỗi – peller
Hmmm .. '" "instanceof String' là' false' .. TẠI SAO !? 'typeof" "' trả về '" chuỗi "' mặc dù. Tôi cho rằng điều này chỉ có thể được giải thích nếu '" "' có một hàm tạo không phải là 'Chuỗi', mặc dù bạn mong đợi nó. – Halcyon
Trong JavaScript đối tượng String chung có các phương thức được xác định trước bằng ngôn ngữ. Các chuỗi ký tự chuỗi thực tế kế thừa các phương thức của đối tượng String toàn cục, nhưng không có thuộc tính nào ngoại trừ "độ dài".
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String
Hum. Vậy tại sao không phải là '' '.length' được in? – Randomblue
Tôi chưa bao giờ sử dụng console.dir. Tôi đã luôn luôn sử dụng console.log. ''' .length === 0' – austincheney
không chính xác. Tiếp tục đọc thêm về sự khác biệt giữa các chuỗi ký tự và các đối tượng – peller
- 1. Tại sao mảng C# không có thuộc tính Đếm?
- 2. Tại sao trình bày trang thuộc tính hiển thị "đối tượng không có thuộc tính"?
- 3. Tại sao thuộc tính Có thể duyệt web làm cho thuộc tính không bị ràng buộc?
- 4. không có thuộc tính
- 5. Tại sao thuộc tính đối tượng này không xác định?
- 6. Tại sao StringBuilder không in?
- 7. Tại sao Mage.exe không tạo thuộc tính tương thích?
- 8. Tại sao các cá thể python không có thuộc tính __name__?
- 9. Tại sao {{}} không hoạt động trong thuộc tính src? Tại sao tôi cần ngSrc?
- 10. Tại sao thuộc tính NSMutableArray (bản sao, nonatomic) tạo NSArrays?
- 11. Tại sao mã này nhận được đối tượng 'str' này không có lỗi 'get_match_routes' thuộc tính?
- 12. AttributeError: đối tượng 'module' (scipy) không có thuộc tính *** Tại sao lỗi này xảy ra?
- 13. Thuộc tính PythonError: Đối tượng không có thuộc tính
- 14. Ninject 2.0: Tiêm thuộc tính không có thuộc tính
- 15. Tại sao tôi nhận được lỗi này, "đối tượng 'NoneType' không có thuộc tính 'csrf_exempt'
- 16. Tại sao console.log() không in được gì?
- 17. Tại sao không phải là có thể cho bố trí tuyến tính để có phong cách thuộc tính
- 18. Thuộc tính sao chép thuộc tính không khớp với thuộc tính được thừa hưởng từ MKAnnotation
- 19. Tại sao Java không có hằng số cho các tên thuộc tính hệ thống nổi tiếng?
- 20. lý do tại sao lớp 'đối tượng' không có thuộc tính người dùng đặt
- 21. Tại sao UITextview không có thuộc tính giữ chỗ như UITextField
- 22. Tại sao sẽ không có thuộc tính gốc trong Java 7?
- 23. Tại sao thuộc tính Margin của XAML có bốn thành phần không phải là hai?
- 24. Thuộc tính phiên in trong jsp
- 25. Tại sao các ký tự ASCII không thể in thực sự có thể in được?
- 26. iOS: Không sao lưu thuộc tính?
- 27. Thuộc tính không tồn tại trong ngữ cảnh hiện tại
- 28. Tại sao thuộc tính được chọnCalendars của EKCalendarChooser rỗng?
- 29. đối tượng 'RelatedManager' không có thuộc tính
- 30. Tại sao xsd.exe tạo thuộc tính chuỗi cho xs: integer?
'console.dir (new string()) ' – Petah
Cùng một kết quả mặc dù? (trong Firefox) – Halcyon