Douglas Crockford đã viết trong cuốn sách của ông (trang 4):"phương pháp" phương pháp trong cuốn sách Crockford: Javascript: The Good Parts
Trong suốt cuốn sách, một phương pháp method
được sử dụng để xác định phương pháp mới, Đây là định nghĩa của nó:
Function.prototype.method = function (name, func) {
this.prototype[name] = func;
return this;
};
Sau đó, ông bắt đầu sử dụng method
này để thêm phương pháp trong Number, String, Function, Object, Array, RegExp
, và đây là danh sách đầy đủ:
P33:
Number.method('integer', function() {...});
String.method('trim', function() {...});
P40 (không chắc chắn nếu có một in lầm trong trang 41: cuối()):
String.method('deentityify', function() {...}());
P43 & P44:
Function.method('curry', function() {...});
P47 (Tôi nhầm lẫn ở đây, don' t biết tại sao Crockford xác định new
phương pháp, và ông dường như không bao giờ sử dụng new
phương pháp trong cuốn sách):
Function.method('new', function() {...});
P48:
Function.method('inherits', function (Parent) {...});
P54:
Object.method('superior', function (name) {...});
P62:
Array.method('reduce', function (f, value) {...});
P79:
Array.method('pop', function() {...});
Array.method('push', function() {...});
Array.method('shift', function() {...});
P82:
Array.method('splice', function (start, deleteCount) {...});
P84:
Function.method('bind', function (that) {...});
P88:
RegExp.method('test', function (string) {...});
String.method('charAt', function (pos) {...});
P90 (không chắc chắn nếu có một in lầm trong trang 91: cuối()):
String.method('entityify', function() {...}());
Các Định nghĩa method
được dựa trên Function
, tại sao nó có thể được sử dụng trong Number, String, Object, Array, RegExp
bên cạnh Function
? Và có thể sử dụng method
này cho các loại dữ liệu khác không?
Một câu hỏi nhỏ khác: trong số64, định nghĩa của Array.dim, Array.matrix, Array.identity
không sử dụng ở trên method
, tại sao?
Tôi không chắc liệu Số, Chuỗi, Đối tượng, Mảng, RegExp (Có thể hàm và ngày và Boolean) là tất cả các chức năng. Có vẻ như họ là Global Objects. – John
@ John: Tôi đảm bảo với bạn, tất cả đều là chức năng. Hãy thử 'alert (typeof Number)' vv nếu bạn không tin tôi, hoặc kiểm tra đặc điểm kỹ thuật (phần 15.1.4): http://www.ecma-international.org/publications/standards/Ecma-262.htm . Họ cũng là tài sản của đối tượng toàn cầu, nếu đó là những gì bạn đang nhận được. –
@ John: Tôi hiểu, bạn đã xem tài liệu của Mozilla tại https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects. Đó là chính xác trong đó cũng như các hàm, 'Số',' Chuỗi', 'Đối tượng' và các đối tượng khác, bởi vì tất cả các hàm đều là các đối tượng; nó cũng đúng là thuộc tính của đối tượng toàn cầu, chúng có sẵn trên toàn cầu để có thể được mô tả là "các đối tượng chung". Tuy nhiên, với sự tồn tại của thuật ngữ được xác định chính thức là "đối tượng toàn cầu", tôi thấy việc Mozilla sử dụng thuật ngữ "Các đối tượng toàn cầu" khá vô ích. –