对象的属性不是函数

詹尼斯·克里斯托法基斯

为什么我收到此错误消息 Property 'shortDescr' of object #<Article> is not a function

function Article() {
        this.id = null;
        this.title = null;
        this.url = null;
        this.descr = null;
        this.media = null;
};

Article.prototype.shortDescr = function () {

        if ( this.descr.length > 100) {
            return this.descr.substring(0,80) + "..";
        } else {
            return this.descr;
        }
};

var ArticleFactory = {

    numOfArgs : 5,
    inputCheck : function(args) {
        if (args.length != this.numOfArgs) {
            throw new Error("Invalid number of arguments for class `Article`");
        };
        return true;
    },

    //Fill the properties with values from arguments
    create : function() {
        this.inputCheck(arguments);

        var counter = 0;
        var article = new Article();
        for(propertie in article) {
            article[propertie] = arguments[counter++];
        }
        return article;
    }
};

var descr = "@hughes it actually can do both. i have an object i created with: var obj = and another object that is being passed into a callback from a server, the one passed through the callback prints with the little arrow so you can open it up, the statically created one just prints [object Object] with no arrow. ";

var article = ArticleFactory.create(1,"title","url",descr,{});

console.log(article.shortDescr());

附录

console.log(JSON.stringify(article, null, 4));

{
    "id": 1,
    "title": "title",
    "url": "url",
    "descr": "@hughes it actually can do both. i have an object i created with: var obj = and another object that is being passed into a callback from a server, the one passed through the callback prints with the little arrow so you can open it up, the statically created one just prints [object Object] with no arrow. ",
    "media": {} }

证明

@dystroy是正确的。 在此处输入图片说明

丹尼斯·塞古雷

您在这里隐藏函数:

 for(propertie in article) {
        article[propertie] = arguments[counter++];
 }

更准确地说,您遍历属性名称(包括原型链的属性名称),并为对象设置新值。当使用原型属性的名称设置值时,您不会更改原型,但是将找到的值将是article.shortDescr对象中的一个,而不是原型中的一个。

您所做的工作是盲目的(您甚至无法保证属性的顺序),所以我建议您在这一点上更改设计(怎么做?我不能说,因为我确实没有达到目的) )。

但是,如果要保留它,可以通过使用测试跳过原型属性hasOwnProperty

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

对象的属性不是函数

来自分类Dev

TypeError:对象#<ServerResponse>的属性“ locals”不是函数

来自分类Dev

JS:未捕获的TypeError:对象[object Object]的属性'$'不是函数

来自分类Dev

对象#<Object>的属性'$'不是_.extend._ensureElement上的函数

来自分类Dev

JS:未捕获的TypeError:对象[object Object]的属性'$'不是函数

来自分类Dev

TypeError:对象[object Object]的属性xxx不是函数

来自分类Dev

剔除搜索问题对象#<Object>的属性'model'不是函数

来自分类Dev

对象不是函数

来自分类Dev

FileReader:对象不是函数

来自分类Dev

“ TypeError:对象不是函数”

来自分类Dev

按值而不是引用复制新对象中的对象函数和属性 - javascript

来自分类Dev

返回对象属性的函数

来自分类Dev

如果未覆盖构造函数属性,为什么对象的构造函数属性指向扩展函数中的父函数的构造函数而不是F

来自分类Dev

如果未重写构造函数属性,为什么对象的构造函数属性指向扩展函数中的父函数的构造函数而不是F

来自分类Dev

会话身份验证TypeError:对象#<ServerResponse>的属性'type'不是函数

来自分类Dev

Joomla com媒体图像选择对象[object Object]的属性'$'不是函数index.php

来自分类Dev

JqueryUI自动完成错误:未捕获的TypeError:对象#<Object>的属性'results'不是函数

来自分类Dev

最佳就地:未捕获的TypeError:对象[object Object]的属性'jQuery'不是函数

来自分类Dev

Joomla com媒体图像选择对象[object Object]的属性'$'不是函数index.php

来自分类Dev

javascript函数何时不是对象?

来自分类Dev

TypeError:对象不是函数-jQuery

来自分类Dev

所谓的对象“时间”不是函数

来自分类Dev

Javascript:错误,对象不是函数

来自分类Dev

$ q许诺-对象不是函数

来自分类Dev

TypeError:对象不是函数+ nodeJS

来自分类Dev

JavaScript“不是函数”-对象实例

来自分类Dev

Javascript:错误,对象不是函数

来自分类Dev

回调:“对象不是函数”

来自分类Dev

所谓的对象“时间”不是函数

Related 相关文章

  1. 1

    对象的属性不是函数

  2. 2

    TypeError:对象#<ServerResponse>的属性“ locals”不是函数

  3. 3

    JS:未捕获的TypeError:对象[object Object]的属性'$'不是函数

  4. 4

    对象#<Object>的属性'$'不是_.extend._ensureElement上的函数

  5. 5

    JS:未捕获的TypeError:对象[object Object]的属性'$'不是函数

  6. 6

    TypeError:对象[object Object]的属性xxx不是函数

  7. 7

    剔除搜索问题对象#<Object>的属性'model'不是函数

  8. 8

    对象不是函数

  9. 9

    FileReader:对象不是函数

  10. 10

    “ TypeError:对象不是函数”

  11. 11

    按值而不是引用复制新对象中的对象函数和属性 - javascript

  12. 12

    返回对象属性的函数

  13. 13

    如果未覆盖构造函数属性,为什么对象的构造函数属性指向扩展函数中的父函数的构造函数而不是F

  14. 14

    如果未重写构造函数属性,为什么对象的构造函数属性指向扩展函数中的父函数的构造函数而不是F

  15. 15

    会话身份验证TypeError:对象#<ServerResponse>的属性'type'不是函数

  16. 16

    Joomla com媒体图像选择对象[object Object]的属性'$'不是函数index.php

  17. 17

    JqueryUI自动完成错误:未捕获的TypeError:对象#<Object>的属性'results'不是函数

  18. 18

    最佳就地:未捕获的TypeError:对象[object Object]的属性'jQuery'不是函数

  19. 19

    Joomla com媒体图像选择对象[object Object]的属性'$'不是函数index.php

  20. 20

    javascript函数何时不是对象?

  21. 21

    TypeError:对象不是函数-jQuery

  22. 22

    所谓的对象“时间”不是函数

  23. 23

    Javascript:错误,对象不是函数

  24. 24

    $ q许诺-对象不是函数

  25. 25

    TypeError:对象不是函数+ nodeJS

  26. 26

    JavaScript“不是函数”-对象实例

  27. 27

    Javascript:错误,对象不是函数

  28. 28

    回调:“对象不是函数”

  29. 29

    所谓的对象“时间”不是函数

热门标签

归档