Tôi đang sử dụng Angular.js 1.3.x. Trong các phiên bản trước của góc (bao gồm 1.3.0-beta5), đoạn code sau sẽ sao chép các thuộc tính từ nguyên mẫu trực tiếp đến đối tượng mới:Làm thế nào để giữ nguyên mẫu với angular.copy()?
function x() {};
x.prototype.logIt = function() {console.log("it")};
var src = new x(); // x has custom properties on the prototype
var dest = {};
angular.copy(src, dest);
dest.logIt(); // "TypeError" in Angular 1.3.0+
Tuy nhiên, trong Angular.js 1.3.0+, các thuộc tính từ nguyên mẫu được hoàn toàn bị mất, mặc dù thực tế rằng migration guide for 1.2 to 1.3 nói:
này thay đổi angular.copy để nó áp dụng nguyên mẫu của đối tượng ban đầu để các đối tượng sao chép. Trước đây, angular.copy sẽ sao chép các thuộc tính của chuỗi nguyên mẫu của đối tượng ban đầu trực tiếp lên đối tượng đã sao chép.
Làm cách nào để giữ các thuộc tính từ nguyên mẫu?
Đối với bất cứ ai sử dụng Object.defineProperty và đọc bài viết này: Khách sạn cần phải được định nghĩa là đếm được : true cho nó xuất hiện trong đối tượng được sao chép. –
Protip: cách dễ nhất để duy trì nguyên mẫu của 'Foo' khi sao chép là đi' angular.copy (Foo, Foo.prototype); '. – Bryce
Điều này không trực tiếp trả lời câu hỏi, chỉ cung cấp lý do đằng sau vấn đề. – trysis