javascript - 访问原型对象的函数属性时,报该属性‘is not a function’的错误?是new关键字没起实例化作用?
伊谢尔伦
伊谢尔伦 2017-04-11 10:31:23
[JavaScript讨论组]

javascript代码如下:

var A = function() {
    function Person(name) {
        this.name = name;
    }
 
    var m = function() {
        return "Hello " + this.name;
        //return "Hello ";
    };
 
    Person.prototype.getGreeting = m;
    
    return Person;
};
console.dir(A);

//代码1
//结果正常,无报错
//var B=A();
//console.log(new B("AAAA").getGreeting());

//代码2
//报错:1.js:43 Uncaught TypeError: (intermediate value).getGreeting is not a function
console.log(new A().getGreeting());

//代码3
//结果正常,无报错
console.log(new(new A())("AAAA").getGreeting());

//代码4
//结果正常,无报错
console.log(new(A())("AAAA").getGreeting());

调试过程中,发现报错部分(即代码2)中new A()对象的原型prototype其实是包含有getGreeting这个属性值的。对以上代码有如下几个疑问:
1.new A()生成的是什么?希望可以从深层次解答。
2.new A()生成的对象和new(new A())("AAAA")生成对象的区别?
3.代码1和代码3可看出new A()A()貌似没有什么区别,为什么?
4.问题3new A()A()如果确实是没区别的话,那就是new关键字没有起实例化作用,这该怎么理解?

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(0)
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号