JavaScript - прототип - PullRequest
       8

JavaScript - прототип

1 голос
/ 27 октября 2009

Я пытаюсь получить лучшее рабочее знание JavaScript. Итак, я купил книгу Дугласа Крокфорда «Хорошие детали JavaScript».

Я испытываю трудности с захватом Прототипа в данный момент. Кажется, что все ниже работает в моем браузере, пока я не нажму // Пример PROTOTYPE. Может кто-то взглянуть на это, чтобы понять, почему я не могу получить какой-либо вывод из него. (Моя страница возвращается пустой, если я не закомментирую весь код прототипа)

Спасибо за любую помощь.

Барри

var stooge = { 
    "first-name": "Jerome",
    "last-name": "Howard",
    "nickname": "J", 
    "profession" : 'Actor' 
};

// below is augmenting
var st = stooge;
st.nickname = "curly";
// st.nickname and nick are the same because both are ref's to the same object 
var nick = st.nickname;


document.writeln(stooge['first-name']);  //expect Jerome -- this is "suffix" retrieval 
document.writeln(st.nickname); //expect "curly" -- this is "notation" retrieval
document.writeln(nick); //expect "curly"
document.writeln(stooge.profession); 


//PROTOTYPE EXAMPLE; 
if (typeof Object.create !== 'function')
{
    object.create = function(o) {
            var F = function () {}; 
            F.prototype = o; 
            return new F();
};
var another_stooge = Object.create(stooge);
another_stooge['first-name'] = 'Barry'; 
document.writeln(another_stooge['first-name']);
// the below should be inherited from the prototype therefore "Actor" 
document.writeln(another_stooge.profession);

Ответы [ 2 ]

5 голосов
/ 27 октября 2009

Вам не хватает закрывающей скобки в конце выражения функции, назначенного для object.create, а также у вас нет заглавных букв Object в object.create = function(o) {.

//PROTOTYPE EXAMPLE; 
if (typeof Object.create !== 'function')
{
    Object.create = function(o) {  // <--- "Object" instead of "object"
        var F = function () {}; 
        F.prototype = o; 
        return new F();
    };
}  // <--- Closing brace was missing
3 голосов
/ 27 октября 2009

Кажется, вам не хватает закрывающей скобки для строки object.create = function(o) { .... Я вижу закрывающую скобку для оператора if и для var F = function () {};, но не для function(o).

Отсутствующая закрывающая скобка действительно подавит вывод, потому что Javascript будет предполагать все, прежде чем (отсутствующая) закрывающая скобка станет частью определения функции, а не чем-то, что должно быть выполнено (пока).

...