Skip to content

Commit c8551b0

Browse files
committed
Translate Other built-in prototypes part
1 parent e1acbae commit c8551b0

1 file changed

Lines changed: 18 additions & 18 deletions

File tree

1-js/08-prototypes/03-native-prototypes/article.md

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
Свойство `"prototype"` широко используется в самом ядре JavaScript. Все встроенные функции-конструкторы используют его.
44

5-
Сначала мы посмотрим как это работает для простых объектов, а затем и для более сложных.
5+
Сначала мы посмотрим как это работает для простых объектов, а затем и для более сложных.
66

77
## Object.prototype
88

@@ -15,7 +15,7 @@ alert( obj ); // "[object Object]" ?
1515

1616
Где код, который генерирует строку `"[object Object]"`? Это встроенный метод `toString`, но где он? `obj` ведь пуст!
1717

18-
...Но краткая нотация `obj = {}` это тоже самое, что и `obj = new Object()`, где `Object` - встроенная функция-конструктор для объектов с собственным свойством `prototype`, который ссылается на огромный объект с методом `toString` и другими.
18+
...Но краткая нотация `obj = {}` это то же самое, что и `obj = new Object()`, где `Object` - встроенная функция-конструктор для объектов с собственным свойством `prototype`, который ссылается на огромный объект с методом `toString` и другими.
1919

2020
Вот что происходит:
2121

@@ -36,63 +36,63 @@ alert(obj.__proto__ === Object.prototype); // true
3636
// obj.toString === obj.__proto__.toString == Object.prototype.toString
3737
```
3838

39-
Стоит обратить внимание, что выше `Object.prototype` по цепочке прототипов нет допольнительного свойства `[[Prototype]]`:
39+
Стоит обратить внимание, что выше `Object.prototype` по цепочке прототипов нет дополнительного свойства `[[Prototype]]`:
4040

4141
```js run
4242
alert(Object.prototype.__proto__); // null
4343
```
4444

45-
## Other built-in prototypes
45+
## Другие встроенные прототипы
4646

47-
Other built-in objects such as `Array`, `Date`, `Function` and others also keep methods in prototypes.
47+
Другие встроенные объекты, такие как `Array`, `Date`, `Function` и другие, также хранят свои методы в прототипах.
4848

49-
For instance, when we create an array `[1, 2, 3]`, the default `new Array()` constructor is used internally. So the array data is written into the new object, and `Array.prototype` becomes its prototype and provides methods. That's very memory-efficient.
49+
Например, когда создается массив `[1, 2, 3]`, скрыто используется конструктор по-умолчанию `new Array()`. Так данные массива записываются в новый объект, и прототипом этого объекта становится `Array.prototype`, предоставляя ему свои методы. Это позволяет эффективно использовать память.
5050

51-
By specification, all of the built-in prototypes have `Object.prototype` on the top. Sometimes people say that "everything inherits from objects".
51+
Согласно спецификации, наверху иерархии встроенных прототипов находится `Object.prototype`. Иногда говорят, что "все наследуется от объектов".
5252

53-
Here's the overall picture (for 3 built-ins to fit):
53+
Вот более полная картина (для 3 встроенных объектов):
5454

5555
![](native-prototypes-classes.png)
5656

57-
Let's check the prototypes manually:
57+
Давайте проверим прототипы:
5858

5959
```js run
6060
let arr = [1, 2, 3];
6161

62-
// it inherits from Array.prototype?
62+
// наследует от Array.prototype?
6363
alert( arr.__proto__ === Array.prototype ); // true
6464

65-
// then from Object.prototype?
65+
// затем от Object.prototype?
6666
alert( arr.__proto__.__proto__ === Object.prototype ); // true
6767

68-
// and null on the top.
68+
// и null на вершине иерархии
6969
alert( arr.__proto__.__proto__.__proto__ ); // null
7070
```
7171

72-
Some methods in prototypes may overlap, for instance, `Array.prototype` has its own `toString` that lists comma-delimited elements:
72+
Некоторые методы в прототипах могу пересекаться, например, у `Array.prototype` есть свой метод `toString`, который выводит элементы массива через запятую:
7373

7474
```js run
7575
let arr = [1, 2, 3]
76-
alert(arr); // 1,2,3 <-- the result of Array.prototype.toString
76+
alert(arr); // 1,2,3 <-- результат Array.prototype.toString
7777
```
7878

79-
As we've seen before, `Object.prototype` has `toString` as well, but `Array.prototype` is closer in the chain, so the array variant is used.
79+
Как мы видели раньше, у `Object.prototype` есть свой `toString`, но так как `Array.prototype` ближе в цепочке прототипов, то берётся именно вариант для массивов:
8080

8181

8282
![](native-prototypes-array-tostring.png)
8383

8484

85-
In-browser tools like Chrome developer console also show inheritance (`console.dir` may need to be used for built-in objects):
85+
В браузерных инструментах, таких как консоль разработчик в Chrome, можно посмотреть цепочку наследования (возможно, потребуется использовать `console.dir` для встроенных объектов):
8686

8787
![](console_dir_array.png)
8888

89-
Other built-in objects also work the same way. Even functions -- they are objects of a built-in `Function` constructor, and their methods (`call`/`apply` and others) are taken from `Function.prototype`. Functions have their own `toString` too.
89+
Другие встроенные объекты работают таким же способом. Даже функции -- все они объекты встроенного конструктора `Function`, и все их методы (`call`/`apply` и другие) берутся из `Function.prototype`. Также у функций есть свой метод `toString`.
9090

9191
```js run
9292
function f() {}
9393

9494
alert(f.__proto__ == Function.prototype); // true
95-
alert(f.__proto__.__proto__ == Object.prototype); // true, inherit from objects
95+
alert(f.__proto__.__proto__ == Object.prototype); // true, наследует от Object
9696
```
9797

9898
## Primitives

0 commit comments

Comments
 (0)