Где находится свойство prototype для строк в JavaScript? - PullRequest
1 голос
/ 13 ноября 2009

Я только что заметил, что в строках JavaScript .

нет свойства прототипа.

Это педагогический вопрос, пока я пытаюсь обернуть голову вокруг системы типов JavaScript, но что дает?

Почему "abc".toString() работает? И как бы я расширил строки? Если бы я хотел быть в состоянии сделать "hey you!".alertDialog() например?

Ответы [ 4 ]

11 голосов
/ 13 ноября 2009
String.prototype.alertDialog = function() { alert(this); };
6 голосов
/ 13 ноября 2009

String.prototype - это прототип строки.

3 голосов
/ 13 ноября 2009

Вы можете расширить класс String, ссылаясь на

String.prototype.yourFunction = function() {}
2 голосов
/ 13 ноября 2009

Слово предупреждения при работе с прототипом и типами данных Object, если вы используете цикл for, полная функция возвращается как одна из пар ключ / значение. См. Основные примеры ниже и комментарии.

// Basic hash-like Object
var test = {
    'a':1,
    'b':2,
    'c':3,
    'd':4
};

// Incorrect
// badAlerter prototype for Objects
// The last two alerts should show the custom Object prototypes
Object.prototype.badAlerter = function() {
    alert('Starting badAlerter');
    for (var k in this) {
        alert(k +' = '+ this[k]);
    }
};

// Correct
// goodAlerter prototype for Objects
// This will skip functions stuffed into the Object.
Object.prototype.goodAlerter = function() {
    alert('Starting goodAlerter');
    for (var k in this) {
        if (typeof this[k] == 'function') continue;
        alert(k +' = '+ this[k])
    }
};

test.badAlerter();
test.goodAlerter();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...