Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Прототипы встроенных объектов (https://javascript.ru/forum/events/31418-prototipy-vstroennykh-obektov.html)

cyber 06.09.2012 20:46

Прототипы встроенных объектов
 
наконец то сел за учебник по js и дошел до прототипов.
Но чет я не много запутался.
тут написано http://learn.javascript.ru/native-pr...ject-prototype что
String.__proto__ = Встроенному обьекту

но я не пойму почему если его заменить
String.__proto__ = {};

      alert('slice'.slice(1));

то обьект String получает "доступ" к встроенному обьекту?
Я так понимаю это происходит потому что в данном случает __proto__ не заменяется а расширяется ?

melky 06.09.2012 21:24

нет. дело вообще в другом - читайте спеки.

а так всё работает :
var a = new String("TEST");
a.__proto__ = { "FOO":"BAR" };

alert(a.FOO);

cyber 06.09.2012 21:34

Цитата:

Сообщение от melky (Сообщение 203409)
нет. дело вообще в другом - читайте спеки.

а так всё работает :
var a = new String("TEST");
a.__proto__ = { "FOO":"BAR" };

alert(a.FOO);

эм.. ты меня не правильно понял...
перефразирую :
как сделать как сделать так что бы обькту не были доступны стандартные свойства и методы

cyber 07.09.2012 08:53

чет я запутался с __proto__ и prototypе , а точнее в их разнице.
что бы записать в __poroto__ через prototype нужно использовать функцию конструктор
var obj_ = {Where:'this'};
      
      function constr() {
      
        this.eat = true;
      
      }    
      
      constr.prototype = obj_;
      
      var c = new constr;
      
      console.log(c.__proto__);


напрямую нельзя
var clear = {};
      
      
      clear.prototype = {eats:true};

      console.log(clear.eats)

а что бы расширить встроенный обьект нужно использовать такую конструкцию?
String.prototype.repeat = function(times) {
  return new Array(times+1).join(this);
}

верно я понял?


Часовой пояс GMT +3, время: 10:46.