addyosmani / addyosmani/essential-js-design-patterns

I think you're wrong about the constructor's "prototype" property

Đang mở
#166 1 bình luận 0 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
HTML
Star
4.9k
Fork
804
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

Hey Addy, I've been reading your Javascript design patterns online, and I think it's a marvelous book. I respect you a lot, so don't think that I'm attacking you ( or your knowledge of Javascript ) in any way, shape or form. In fact, I really do admire your knowledge.

In the "Constructors with Prototypes" subsection you say this:

> Functions, like almost all objects in JavaScript, contain a "prototype" object. When we call a JavaScript constructor to create an object, all the properties of the constructor's prototype are then made available to the new object.

I don't think that this is right. I think that the "prototype" property actually points to the prototype object of all objects instantiated by the constructor, but not the constructor's prototype itself.

I did a test today in Developer Tools, and this really seems to be the case.

Take this for an example; we have a constructor function ( I'm going to use your example if you don't mind ):

``` javascript
function Car( model, year, miles ) {

this.model = model;
this.year = year;
this.miles = miles;

}
```

Now, if I check the prototype of this function in Chrome Developer Tools,

``` javascript
Car.__proto__
```

... I will get this:

``` javascript
function Empty() {}
```

, which is the uppermost prototype of all functions. Now, I can instantiate the Car 'class':

``` javascript
var myFord = new Car( 'My Ford', 2015, 0 );
```

, and then see its prototype:

``` javascript
myFord.__proto__
```

...then I get this:

``` javascript
Car{}
```

So, I don't think that the function's "prototype" property actually points to it's own prototype; rather, it point's to the prototype of all objects that were instantiated by it.

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.