Форум программистов, компьютерный форум, киберфорум
Наши страницы
JavaScript
Войти
Регистрация
Восстановить пароль
 
vooduq
69 / 69 / 22
Регистрация: 06.06.2013
Сообщений: 404
1

прототип

13.10.2013, 18:19. Просмотров 251. Ответов 4
Метки нет (Все метки)

Вот пример метода
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
    Element.prototype.classListe = function(){
        var self = this;
        this.result = new ClassList(self);
        return this.result;
    };
 
    function ClassList(self){
        result = {};
        var names = self.className,n,i,name;
        for(i=0;names.length !== 0;i++){
            n = names.indexOf(" ");
            if(n > 0) {
                name = names.substring(0,n);
                names = names.slice(n+1);
            }
            else {
                name = names;
                names = names.slice(name.length);
            }
                result[i] = name;
        }
    return result;
    };
 
    ClassList.prototype.add = function(name){
        if(self.result.length > 0) self.result[self.result.length] = name;
        else self.result[0] = name;
    };
Вызов
Javascript
1
document.getElementById('box').classListe()
Как мне запрограммировать сюда метод add чтоб он работал

Javascript
1
document.getElementById('box').classListe().add("new-class")
Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.10.2013, 18:19
Ответы с готовыми решениями:

Прототип
Здравствуйте, Можно ли как-то оптимизировать данный код? ...

Ссылки на прототип
function Rabbit(name) { this.name = name; } Rabbit.prototype.sayHi =...

Странный прототип
function Rabbit() {} Rabbit.prototype = { eats: true }; var rabbit =...

Прототип - не получается вызвать функцию
Здравствуйте написал функцию так, но когда вызываю так, Layer._close();, пишет,...

Зачем нужен прототип (prototype)?
Всем привет. Прохожу курсы Codecademy и застрял на этом уроке:...

4
nubideus
390 / 272 / 76
Регистрация: 19.09.2011
Сообщений: 828
13.10.2013, 18:55 2
vooduq, это все очень странно, и все надо переписать.

Цитата Сообщение от vooduq Посмотреть сообщение
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function ClassList(self){
* * * * result = {}; // window.result = {} // ? 0_o ?
* * * * var names = self.className,n,i,name;
* * * * for(i=0;names.length !== 0;i++){
* * * * * * n = names.indexOf(" ");
* * * * * * if(n > 0) {
* * * * * * * * name = names.substring(0,n);
* * * * * * * * names = names.slice(n+1);
* * * * * * }
* * * * * * else {
* * * * * * * * name = names;
* * * * * * * * names = names.slice(name.length);
* * * * * * }
* * * * * * * * result[i] = name;
* * * * }
* * return result;
* * };
Javascript
1
var result = {__proto__:ClassList.prototype};
просто играться с js и показывать поцонам нечитаемый код может и приемлемо, но реально использовать такой код - фуфуфу
1
vooduq
69 / 69 / 22
Регистрация: 06.06.2013
Сообщений: 404
13.10.2013, 19:08  [ТС] 3
спасибо что вытер об меня ноги, реально, без твоей помощи я бы не знаю
благодарочка от чистого сердца

Добавлено через 5 минут
А что за слухи, мол объект подобен массиву должен отдавать длину length? Или это только слухи??
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
    Element.prototype.classListe = function(){
        return new ClassList(this);
    };
 
    function ClassList(self){
        var names = self.className,n,i,name;
        for(i=0;names.length !== 0;i++){
            n = names.indexOf(" ");
            if(n > 0) {
                name = names.substring(0,n);
                names = names.slice(n+1);
            }
            else {
                name = names;
                names = names.slice(name.length);
            }
                this[i] = name;
        }
        return this;
    };
 
        ClassList.prototype.add = function(name){
                if(this.length > 0) this[this.length] = name;
                else this[0] = name;
            return this;
    }
0
nubideus
390 / 272 / 76
Регистрация: 19.09.2011
Сообщений: 828
13.10.2013, 20:04 4
вот так чуть лучше:
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
var div = document.getElementsByTagName("div")[0];
 
Element.prototype.createClassList = function(){
    return new ClassList(this);
}
 
function ClassList(owner){
    this.classes = owner.className.split(" ");
    this.owner = owner;
}
 
ClassList.prototype.add = function(newClassName){
    if(this.classes.indexOf(newClassName) === -1){
        this.classes.push(newClassName);
        this.applyClasses();
    }
};
 
ClassList.prototype.remove = function(className){
    var index = this.classes.indexOf(className);
    
    if(index !== -1){
        this.classes.splice(index, 1);
        this.applyClasses();
    }
};
 
ClassList.prototype.applyClasses = function(){
    this.owner.className = this.classes.join(" ");
};
 
var classList = div.createClassList();
 
classList.add("b");
classList.remove("a");
classList.remove("a");
 
console.log(div.className)
Цитата Сообщение от vooduq Посмотреть сообщение
А что за слухи, мол объект подобен массиву должен отдавать длину length? Или это только слухи??
зачем?
слухи же.
1
vooduq
69 / 69 / 22
Регистрация: 06.06.2013
Сообщений: 404
13.10.2013, 21:13  [ТС] 5
Ладно, спасибо
0
13.10.2013, 21:13
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.10.2013, 21:13

JavaScript, добавить-функцию к классу строк, используя прототип
Помогите, пожалуйста... Написать скрипт, в котором добавить к стандартному...

Добавить ф-цию в прототип, которая модифицирует объект, для которого она была вызвана
Здравствуйте! Название темы длинное получилось, надеюсь на примере будет...

Создать объект прототип робота, который изготовлен из определенного материала, имеет имя, пол, оружие, умеет стрелять, здороваться и прощаться
Задачу я более-менее поняла, но как сделать, чтобы робот умел стрелять? ......


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru