2013-05-16 37 views
15

Ai đó có thể giúp tôi hiểu mã này không? Có vẻ quá phức tạp với tôi.Mở rộng trong javascript

var __extends = this.__extends || function (d, b) { 
    function __() { this.constructor = d; } 
    __.prototype = b.prototype; 
    d.prototype = new __(); 
}; 


var PageView = (function (_super) { 
    "use strict"; 

    __extends(MyPageView, _super); 

function MyPageView(rootElement, viewModelParameter, calendarWeeksViewModel) { 
}); 


} 
+0

Bản sao của [Loại bản ghi và Đóng cửa của Google] (http://stackoverflow.com/questions/13635901/typescript-and-google-closure), nhưng câu hỏi đó đủ tốt để giải thích nơi họ nhận được mã. Thảo luận thêm [ở đây] (http://stackoverflow.com/questions/5529285/prototype-chaining-constructor-inheritance). Bạn có thể đọc lên trên kế thừa prototypal javascript để tìm hiểu thêm. –

Trả lời

12

Vì vậy, về cơ bản

__extends(MyPageView, _super); 

Nghĩ về ofinheritance bằng một ngôn ngữ hướng đối tượng. Trường hợp một lớp học đang mở rộng một lớp học Super hoặc một lớp cơ sở ..

Vì vậy, về cơ bản ở đây MyPageView sẽ mở rộng chức năng và triển khai lớp học siêu hạng.

Vì vậy, giả sử Chế độ xem cơ sở có method A() and method B() và Chế độ xem hiện tại có phương thức C(), thì chế độ xem hiện tại của bạn có quyền truy cập vào cả ba phương thức A() , B() and C() trong chế độ xem của nó.

Nhưng cho phép nói MyPageViewmethod B(), được định nghĩa trong nó, sau đó phương pháp bên trong xem sẽ mất precedence over the Method B() of Super View

var __extends = this.__extends || function (d, b) { 
    function __() { this.constructor = d; } 
    __.prototype = b.prototype; 
    d.prototype = new __(); 
}; 

Mỗi chức năng có một thuộc tính prototype huyền diệu.

var __extends = this.__extends || function (d, b) { 

Cheks nếu chức năng có sẵn trong bối cảnh đó, nếu không xác định một chức năng, mà sẽ đưa 2 đối số, Các đối tượng đó là được mở rộng và đối tượng mà từ đó nó được mở rộng ..

function __() { this.constructor = d; } 

định nghĩa một hàm mới gọi là __ trong đó mà constructor tài sản của bối cảnh là ràng buộc để object d

__.prototype = b.prototype; 

Thuộc tính prototype của Object __ được trỏ đến chuỗi b.prototype ..

d.prototype = new __(); 

Các tiếp cận các phương pháp Super View xảy ra ở đây, nơi bạn đang thiết lập các thuộc tính prototype của Object ở đây ..

Vì vậy, khi dụ mới được tạo, nếu phương thức không khả dụng, thì vì đối tượng prototype trên đối tượng, nó sẽ kiểm tra các phương thức trong Super view vì nó có sẵn trên hàm __ được gắn với object d

+0

Cảm ơn rất nhiều !! Nhưng tôi không hiểu những gì this.constructor = d; } __. Prototype = b.prototype; d.prototype = new __(); –

+0

@NishaShukla .. Kiểm tra mã cập nhật .. –

+0

Cảm ơn bạn rất nhiều !!! –

Các vấn đề liên quan