knockout.mapping icon indicating copy to clipboard operation
knockout.mapping copied to clipboard

JSON string value of "constructor" throws exception on .fromJS call

Open scottksmith95 opened this issue 12 years ago • 2 comments

I am getting the following error when a data field value is the string "constructor":

Uncaught TypeError: Object function Object() { [native code] } has no method 'get' knockout.mapping-latest.debug.js:770

I am using version v2.3.2.

Here is my code to show how I am calling it:

var results = ko.observableArray();
ko.mapping.fromJS(data.items, {}, results);

data.items is an array of objects and the following is the JSON item that is causing this error:

{
    "id": 25602,
    "created": "2012-12-30T10:13:29.03",
    "created_text": "2012-12-30T18:13:29Z",
    "source_account": {
        "name": "Scott Smith",
        "display_name": "Scott Smith",
        "title": "Founder of coderbits",
        "location": "Northern California",
        "website_link": "http://scottksmith.com",
        "bio": "Scott Smith is the founder of coderbits.com, senior director of software development at Front Porch, Inc, and a scuba diving developer extraordinaire.",
        "id": 1,
        "views": 993,
        "created": "2012-08-24T11:41:43.157",
        "updated": "2012-12-29T20:20:55.24",
        "username": "scott",
        "gravatar_hash": "4400061d4ff1f220a9b5f060368cd869",
        "gravatar_link": "https://secure.gravatar.com/avatar/4400061d4ff1f220a9b5f060368cd869?d=https%3A%2F%2Fcoderbits.com%2Fimages%2Fgravatar.png&r=PG",
        "about": "Curently inhabiting Northern California, Scott Smith is a self described 'Founder of coderbits' with a proficiency in c#, javascript, web development, .net, and jquery.",
        "badge_total_score": 264,
        "show_summary": true,
        "show_skills": true,
        "show_code": true,
        "show_binaries": true,
        "show_designs": true,
        "show_education": true,
        "show_awards": true,
        "show_memberships": true,
        "show_activity_stream": true,
        "show_badges": true,
        "one_bit_badges": 48,
        "eight_bit_badges": 17,
        "sixteen_bit_badges": 5,
        "thirty_two_bit_badges": 0,
        "sixty_four_bit_badges": 0,
        "follower_count": 65,
        "following_count": 68,
        "top_skills": [
            {
                "id": 71711,
                "name": "c#",
                "count": 146
            },
            {
                "id": 71712,
                "name": "javascript",
                "count": 136
            },
            {
                "id": 71713,
                "name": "web development",
                "count": 132
            },
            {
                "id": 71714,
                "name": ".net",
                "count": 21
            },
            {
                "id": 71715,
                "name": "css",
                "count": 9
            }
        ],
        "top_tools": [
            {
                "id": 19360,
                "name": "visual studio",
                "count": 35
            },
            {
                "id": 19361,
                "name": "git",
                "count": 20
            },
            {
                "id": 19362,
                "name": "nuget",
                "count": 16
            }
        ],
        "top_interests": [
            {
                "id": 95584,
                "name": "javascript",
                "count": 208
            },
            {
                "id": 95585,
                "name": "c#",
                "count": 200
            },
            {
                "id": 95586,
                "name": "web development",
                "count": 140
            },
            {
                "id": 95587,
                "name": "visual studio",
                "count": 47
            },
            {
                "id": 95588,
                "name": ".net",
                "count": 42
            }
        ],
        "top_traits": [
            {
                "id": 84837,
                "name": "Quality",
                "count": 63
            },
            {
                "id": 84838,
                "name": "Productivity",
                "count": 52
            },
            {
                "id": 84839,
                "name": "Ambition",
                "count": 45
            },
            {
                "id": 84840,
                "name": "Knowledge",
                "count": 42
            },
            {
                "id": 84841,
                "name": "Self Development",
                "count": 30
            }
        ],
        "top_areas": [
            {
                "id": 52341,
                "name": "Code",
                "count": 141
            },
            {
                "id": 52342,
                "name": "Education",
                "count": 99
            },
            {
                "id": 52343,
                "name": "Memberships",
                "count": 13
            },
            {
                "id": 52344,
                "name": "Binaries",
                "count": 8
            },
            {
                "id": 52345,
                "name": "Designs",
                "count": 8
            }
        ]
    },
    "activity_type": {
        "id": 9,
        "value": "Invited",
        "icon_class": "icon-user",
        "display_text": " invited and signed up ",
        "dropdown": false
    },
    "target_account": {
        "name": "kriskd",
        "display_name": "kriskd",
        "title": "coder",
        "location": "planet earth",
        "website_link": "",
        "bio": "",
        "id": 4988,
        "views": 19,
        "created": "2012-12-30T10:13:28.817",
        "updated": "2012-12-30T13:02:31.993",
        "username": "kriskd",
        "gravatar_hash": "8c46482135d03742c0fcdce5e043bc94",
        "gravatar_link": "https://secure.gravatar.com/avatar/8c46482135d03742c0fcdce5e043bc94?d=https%3A%2F%2Fcoderbits.com%2Fimages%2Fgravatar.png&r=PG",
        "about": "Curently inhabiting planet earth, kriskd is a self described 'coder' with a proficiency in javascript, php, cakephp, constructor, and overwrite.",
        "badge_total_score": 45,
        "show_summary": true,
        "show_skills": true,
        "show_code": true,
        "show_binaries": false,
        "show_designs": false,
        "show_education": true,
        "show_awards": true,
        "show_memberships": true,
        "show_activity_stream": true,
        "show_badges": true,
        "one_bit_badges": 5,
        "eight_bit_badges": 3,
        "sixteen_bit_badges": 1,
        "thirty_two_bit_badges": 0,
        "sixty_four_bit_badges": 0,
        "follower_count": 1,
        "following_count": 1,
        "top_skills": [
            {
                "id": 74011,
                "name": "javascript",
                "count": 10
            },
            {
                "id": 74012,
                "name": "php",
                "count": 10
            },
            {
                "id": 74013,
                "name": "cakephp",
                "count": 1
            },
            {
                "id": 74014,
                "name": "constructor",
                "count": 1
            },
            {
                "id": 74015,
                "name": "overwrite",
                "count": 1
            }
        ],
        "top_tools": [
            {
                "id": 20013,
                "name": "git",
                "count": 2
            }
        ],
        "top_interests": [
            {
                "id": 98705,
                "name": "php",
                "count": 24
            },
            {
                "id": 98706,
                "name": "javascript",
                "count": 20
            },
            {
                "id": 98707,
                "name": "cakephp",
                "count": 11
            },
            {
                "id": 98708,
                "name": "css",
                "count": 10
            },
            {
                "id": 98709,
                "name": "drupal",
                "count": 10
            }
        ],
        "top_traits": [
            {
                "id": 87555,
                "name": "Communication",
                "count": 25
            },
            {
                "id": 87556,
                "name": "Influence",
                "count": 18
            },
            {
                "id": 87557,
                "name": "Knowledge",
                "count": 2
            },
            {
                "id": 87558,
                "name": "Productivity",
                "count": 1
            },
            {
                "id": 87559,
                "name": "Teamwork",
                "count": 1
            }
        ],
        "top_areas": [
            {
                "id": 53957,
                "name": "Code",
                "count": 6
            },
            {
                "id": 53958,
                "name": "Education",
                "count": 2
            },
            {
                "id": 53959,
                "name": "Memberships",
                "count": 2
            }
        ]
    },
    "external_account": null,
    "earned_badge": null,
    "input": null
}

The offending part of the JSON is this;

{
    "id": 74014,
    "name": "constructor",
    "count": 1
}

When I change the string "constructor" to anything else, it works just fine.

scottksmith95 avatar Dec 31 '12 05:12 scottksmith95

We hit this as well: the value 'watch' crashes on Firefox.

lawnsea avatar Sep 04 '13 14:09 lawnsea

Still happening in current version

var originalData = { id: 1, name: "watch" }; var viewModel = ko.mapping.fromJS(originalData);

RobertY9 avatar Jun 19 '14 18:06 RobertY9