为了账号安全,请及时绑定邮箱和手机立即绑定

访问原型对象的函数属性时,报该属性‘is not a function’的错误?是new关键字

访问原型对象的函数属性时,报该属性‘is not a function’的错误?是new关键字

慕雪6442864 2018-10-02 13:10:47
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关键字没有起实例化作用,这该怎么理解?
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 525 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信